Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Batch файл (.bat, .cmd) - как сгенерировать произвольное число от 1 до 10? (http://forum.oszone.net/showthread.php?t=125786)

ANR 12-12-2008 10:40 979185

Batch файл (.bat, .cmd) - как сгенерировать произвольное число от 1 до 10?
 
Подскажите, пожалуйста.

Как можно в BAT файле можно сгенерировать произвольное число от 1 до 10? Афаик, %random% дает число от 0 до 32767, а что если мне нужно от 1 до 10? Есть какой-то простой способо кроме как генерировать в цикле %random% число, пока оно не окажется в пределах от 1 до 10?

Сама задача такая, что нужно выбирать 1 из 10 файлов в произвольном порядке (1.bmp , 2.bmp , ... , 10.bmp). Кто какие способы может предложить? Спасибо!

Petya V4sechkin 12-12-2008 15:37 979431

Цитата:

Цитата ANR
число от 1 до 10?

Пример:
Код:

@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

:Loop
Set V=!Random!
Set /A V = !V! - (!V! / 10) * 10 + 1
Echo !V!
GoTo :Loop


DesmondTruman 25-03-2013 16:45 2118182

Извиняюсь что поднимаю старую тему, но хоть убейте не могу понять как вычисляется set /A V=.
К примеру %random% равен 95. Соответственно выглядеть будет так: set /A V=95 - (95 / 10) * 10 + 1.
Как помниться еще со школы приоритет вычисления в данном случае:
1. Скобки
2. Умножение\деление
3. Плюс\минус
------------------------------------------------

1. Делим то что в скобках: 95/10=9,5
2. Полученное умножаем на 10: 9,5*10=95
3. Далее отнимаем полученное число от 95: 95-95=0
4. И последнее: 0+1=1.
Итого "echo !v!" показывает 6.
То ли я владею старой информацией, то ли начинаю деградировать...

Vadikan 25-03-2013 17:48 2118239

DesmondTruman, попробуйте PowerShell :)
Код:

1..10 | % {Get-Random -Minimum 1 -Maximum 10 }

El Sanchez 25-03-2013 18:21 2118260

Цитата:

Цитата DesmondTruman
1. Делим то что в скобках: 95/10=9,5 »

DesmondTruman, дробная часть откидывается, так что 95/10=9
Еще вариант:
Код:

@Echo Off
SetLocal
Set /A i=(%RANDOM%%%10)+1
Echo:%i%


DesmondTruman 25-03-2013 18:48 2118286

Vadikan, Спасибо, но интересует именно в cmd\bat.
El Sanchez, Спасибо, теперь всё ясно.

subuday77 26-03-2013 00:56 2118559

А как нижний параметр задать? Например сгенерировать число от 25 до 50?

Dragokas 26-03-2013 02:37 2118614

Код:

@Echo Off
SetLocal
set min=25
set max=50
set /a i=%random%%%(max-min+1)+min
Echo:%i%
pause>nul


subuday77 26-03-2013 03:38 2118638

@Echo Off
SetLocal
set /a i=%random%%%(50-25+1)+25
Echo:%i%
pause>nul

Так тоже работает. Спасибо.

gora 26-03-2013 10:02 2118724

Цитата:

Цитата subuday77
Так тоже работает. »

Работает, но понять, (что здесь есть число 50, и что здесь есть число 25, а также почему в скобках не написать просто 26 и не делать ни каких вычислений, а потом еще и почему бы сами скобки не убрать, ставшие ненужными...), невозможно. А в приведенном Diskretor примере все четко и понятно.


Время: 01:41.

Время: 01:41.
© OSzone.net 2001-