2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Генерация случайных чисел в Maple
Сообщение04.12.2016, 13:23 
Аватара пользователя
Требуется сгенерировать случайное число на отрезке $[0,1]$ в Maple.
Пишу так:
Код:
restart;
with(RandomTools[MersenneTwister]):
<...>
a:=GenerateFloat();

Если в такой программе выполнить строчку с командой GenerateFloat несколько раз, то каждый раз будут получаться разные случайные числа.
Но если эту строчку выполнить только один раз, а потом перезапустить всю программу, то при каждом новом запуске она выдаст то же самое случайное число, что и при предыдущих запусках.
Как модифицировать эту программу так, чтобы при разных запусках получались разные случайные числа (и были при этом именно случайными, равномерно распределёнными на $[0,1]$)?
Поиск ответа на данный вопрос в справке Maple'а и в Интернете не дал результатов. Может быть, конечно, я невнимательно искал.
Прошу помощи.

 
 
 
 Re: Генерация случайных чисел в Maple
Сообщение04.12.2016, 13:44 
http://www.maplesoft.com/support/help/Maple/view.aspx?path=RandomTools/MersenneTwister/SetState; надо вызвать после импорта SetState без аргументов, и тогда, насколько я понимаю, генератор будет инициализироваться каждый раз разными значениями. О последнем справка и для функции SetState из главного пакета, правда, не пишет. Обычно в подобных случаях в значения для инициализации входит системное время, но тут об этом ни слова. Проверьте, сработает ли.

 
 
 
 Re: Генерация случайных чисел в Maple
Сообщение04.12.2016, 13:51 
Аватара пользователя
Спасибо, сработало.
Про функцию SetState (с аргументом, которая инициализирует генератор определённым образом) я знал.
Но не знал, что её можно вызывать без аргументов для случайной инициализации генератора.

 
 
 
 randomize
Сообщение08.12.2016, 09:51 
В таких случаях используют команду randomize:
Код:
restart; with(RandomTools[MersenneTwister]):
randomize(): a := GenerateFloat()

 
 
 
 Re: Генерация случайных чисел в Maple
Сообщение08.12.2016, 10:52 
Аватара пользователя
Markiyan Hirnyk, спасибо.
Но SetState вместо randomize тоже работает.

 
 
 
 Re: Генерация случайных чисел в Maple
Сообщение08.12.2016, 10:59 
Да, но команда randomize() имеет более широкое применение. К сожалению, это обстоятельство не описано в справке.

 
 
 
 Re: Генерация случайных чисел в Maple
Сообщение08.12.2016, 11:03 
Аватара пользователя
Markiyan Hirnyk в сообщении #1175106 писал(а):
Да, но команда randomize() имеет более широкое применение. К сожалению, это обстоятельство не описано в справке.

Может быть, тогда Вы об этом расскажете?

 
 
 
 Пример
Сообщение08.12.2016, 11:19 
Ср. результаты
Код:
restart; with(Statistics): Sample(Normal(0, 1), 3);
и
Код:
restart; with(Statistics): randomize():Sample(Normal(0, 1), 3);

 
 
 
 Re: Генерация случайных чисел в Maple
Сообщение08.12.2016, 13:51 
Прошу извинения, я не прав:
Цитата:
randomize calls RandomTools[MersenneTwister][SetState]. It is more efficient to make this call directly than to call randomize.

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group