2014 dxdy logo

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

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





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


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

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

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


27/04/09
20193
Уфа
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
1871
Спасибо, сработало.
Про функцию SetState (с аргументом, которая инициализирует генератор определённым образом) я знал.
Но не знал, что её можно вызывать без аргументов для случайной инициализации генератора.

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


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

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


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

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


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

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


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

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

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


11/07/16
177
Ср. результаты
Код:
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
177
Прошу извинения, я не прав:
Цитата:
randomize calls RandomTools[MersenneTwister][SetState]. It is more efficient to make this call directly than to call randomize.

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

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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