2014 dxdy logo

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

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





Начать новую тему Ответить на тему
 
 Генерация случайных чисел в Maple
Сообщение04.12.2016, 13:23 
Заслуженный участник
Аватара пользователя


26/01/14
1171
Требуется сгенерировать случайное число на отрезке $[0,1]$ в Maple.
Пишу так:
Код:
restart;
with(RandomTools[MersenneTwister]):
<...>
a:=GenerateFloat();

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

 Профиль  
                  
 
 Re: Генерация случайных чисел в Maple
Сообщение04.12.2016, 13:44 
Заслуженный участник
Аватара пользователя


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

 Профиль  
                  
 
 Re: Генерация случайных чисел в Maple
Сообщение04.12.2016, 13:51 
Заслуженный участник
Аватара пользователя


26/01/14
1171
Спасибо, сработало.
Про функцию SetState (с аргументом, которая инициализирует генератор определённым образом) я знал.
Но не знал, что её можно вызывать без аргументов для случайной инициализации генератора.

 Профиль  
                  
 
 randomize
Сообщение08.12.2016, 09:51 


11/07/16
155
В таких случаях используют команду randomize:
Код:
restart; with(RandomTools[MersenneTwister]):
randomize(): a := GenerateFloat()

 Профиль  
                  
 
 Re: Генерация случайных чисел в Maple
Сообщение08.12.2016, 10:52 
Заслуженный участник
Аватара пользователя


26/01/14
1171
Markiyan Hirnyk, спасибо.
Но SetState вместо randomize тоже работает.

 Профиль  
                  
 
 Re: Генерация случайных чисел в Maple
Сообщение08.12.2016, 10:59 


11/07/16
155
Да, но команда randomize() имеет более широкое применение. К сожалению, это обстоятельство не описано в справке.

 Профиль  
                  
 
 Re: Генерация случайных чисел в Maple
Сообщение08.12.2016, 11:03 
Заслуженный участник
Аватара пользователя


26/01/14
1171
Markiyan Hirnyk в сообщении #1175106 писал(а):
Да, но команда randomize() имеет более широкое применение. К сожалению, это обстоятельство не описано в справке.

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

 Профиль  
                  
 
 Пример
Сообщение08.12.2016, 11:19 


11/07/16
155
Ср. результаты
Код:
restart; with(Statistics): Sample(Normal(0, 1), 3);
и
Код:
restart; with(Statistics): randomize():Sample(Normal(0, 1), 3);

 Профиль  
                  
 
 Re: Генерация случайных чисел в Maple
Сообщение08.12.2016, 13:51 


11/07/16
155
Прошу извинения, я не прав:
Цитата:
randomize calls RandomTools[MersenneTwister][SetState]. It is more efficient to make this call directly than to call randomize.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Toucan, maxal, Karan, PAV, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group