为每次运行设置不同的种子

时间:2018-05-10 18:10:44

标签: gnuplot

我有一个函数图,它使用rand(0)生成0到1之间的数字。

我想在每次运行Gnuplot脚本时设置不同的随机序列。 文档说使用rand(x),其中x是一个正整数。

我试过这个

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

为每次执行提供一个整数。 但是,这一行给了我一个错误。我没有找到任何设置rand的种子的例子。

如何每次设置不同的种子以获得不同的图?

此致

2 个答案:

答案 0 :(得分:3)

如果你想在每次gnuplot启动时看到一组看似不同的随机数,你可以使用time(0)函数为随机数生成器播种。使用:

rand(time(0))

第一次实现目标。然后只需在脚本中使用rand(0)。

答案 1 :(得分:2)

您必须实际使用(打印返回值,或将其分配给变量)rand()函数,并使用正整数参数来播种生成器

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

rand(-1)(或重新启动gnuplot)将种子重置为标准值。我想,你想要的是能够设置伪随机种子。通常的方法是使用当前时间和日期:

 print rand(time(0))
 plot ..... something using the rand(0) function
如果参数是整数,则

time()以整数秒返回unix时间,否则返回精度为〜微秒的实数。所以重新运行你的脚本的速率< 1s有时会给出两个相同的图。你可能会像rand(int(time(0)*1000)))那样做以防止这种情况,尽管我无法想象为什么这是必要的。 ; - )