Что нового

Random: неожиданный результат

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Подскажите, пожалуйста, почему данный скрипт выводит 0?
Это ошибка в функции Random() или я чего-то недопонимаю в генерации случайных чисел?
Код:
MsgBox(0,"",Random(1,1,1))
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Ну в этом случае возвращается ошибка - @erorr = 1, следовательно диапазон должен быть явно указан. Random(1, 1, 1) по идее должна возвращать 1, но как ни крути, а это не является случайным числом... Все логично.
 
Автор
snoitaleR

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Yashied
У меня параметр Max в цикле уменьшается до 1...
То есть, я должен в самом скрипте предусмотреть недостижение варианта Random(1,1,1) за счет проверки условия Max>1?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Ну да, я в таких случаях заменяю стандартные функции на "исправленные", не приходиться "уродовать" код.

Код:
Func _Random($Max)
	If $Max = 1 Then
		Return 1
	Else
		Return Random(1, $Max, 1)
	EndIf
EndFunc   ;==>_Random
 

SyDr

Сидра
Сообщения
651
Репутация
158
Yashied [?]
Ну в этом случае возвращается ошибка - @erorr = 1, следовательно диапазон должен быть явно указан. Random(1, 1, 1) по идее должна возвращать 1, но как ни крути, а это не является случайным числом... Все логично.
Странно, что в документации это не указано. Хотя всё правильно: если Min=Max - функция не может вернуть песвдослучайное число.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Функция Random выдаёт значение (число) в случайном порядке из диапазона чисел.
Returns a pseudo-random number between Min and Max
ИМХО При Min=1 и Max=1, о каком диапазоне может быть речь.
Вот так будет выдавать 0 или 1
Код:
MsgBox(0,"",Random(0,1,1))
 
Верх