Установите разные семена для каждого запуска - PullRequest
0 голосов
/ 10 мая 2018

У меня есть график функции, которая использует rand(0) для генерации чисел от 0 до 1.

Я бы хотел устанавливать разные случайные последовательности каждый раз, когда запускаю скрипт Gnuplot. В документации сказано, что используется rand(x), где x - положительное целое число.

Я пробовал это

rand(floor(10*acos(rand(0))))

, который дает целое число для каждого выполнения. Однако эта строка дает мне ошибку. Я не нашел ни одного примера установки семени rand.

Как я могу устанавливать разные семена каждый раз, чтобы получать разные сюжеты?

Привет

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Вы должны использовать (вывести возвращаемое значение или присвоить его переменной) функцию rand() с положительным целочисленным параметром, чтобы заполнить генератор

print rand(-1)
print rand(0)
print rand(-1)
print rand(0)
print rand(5)
print rand(0)

rand(-1) (или перезапуск gnuplot) сбрасывает начальное значение до стандартного значения.Полагаю, вам нужно установить псевдослучайное значение seed .Обычный способ сделать это - использовать текущее время и дату:

 print rand(time(0))
 plot ..... something using the rand(0) function

time() возвращает время unix в целых секундах, если аргумент является целым числом, в противном случае - вещественное с точностью ~ микросекунды.Поэтому повторный запуск сценария со скоростью <1 с иногда дает два одинаковых графика.Вы могли бы сделать что-то вроде <code>rand(int(time(0)*1000))), чтобы предотвратить это, хотя я не мог представить, почему это было бы необходимо.; -)

0 голосов
/ 10 мая 2018

Если вы хотите, чтобы каждый раз при запуске gnuplot выглядел различный набор случайных чисел, вы можете заполнить генератор случайных чисел функцией time (0).Используйте:

rand(time(0))

в первый раз, чтобы начать работу.Затем просто используйте rand (0) для остальных в вашем скрипте.

...