动画中的随机种子

时间:2012-10-08 18:01:44

标签: java random processing

我在Processing中制作动画。我有一些随机点随机移动然后形成一个固体。由于动画太慢,我想保存帧然后将它们添加到电影中。

我需要运行两次或更多相同的程序,所以我使用Random类而不是Processing的random()函数,但我没有得到种子参数的含义。

我应该把什么作为种子?这种随机方法是否均等分布?

3 个答案:

答案 0 :(得分:2)

你把种子放在什么地方并不重要。实际上更好的做法是无参数,因为它每次都会选择不同的种子。如果明确指定种子,则每次运行时都会收到随机行为......但相同的随机行为!

这是因为随机数生成器实际上并不是逻辑上随机的。它们是伪随机的,因为它们是用算法生成的。种子是该算法的一部分。基本上,算法将在该范围内产生均匀的数字分布(事实上,即使PRNG经常被批评为没有随机足够)。

  

可以使用种子状态从任意开始状态开始PRNG。当用该状态初始化时,它将始终产生相同的序列。

From Wikipedia

答案 1 :(得分:2)

尝试

new Random(System.currentTimeMillis());

几乎每次都会给你不同的种子。不知道它是否足够,但绝对比种子更好。

但是,当你做新的Random()

 public Random() { this(++seedUniquifier + System.nanoTime()); }

这就是发生的事情所以我建议你尝试一下,这对你来说更好。

答案 2 :(得分:1)

如果您查看JavaDoc's for the Random class,您将看到需要调用特定方法,nextInt(),nextFloat()等,以获得均匀或高斯分布。如果您希望结果可重复,则应为种子使用常量值。否则,如果您希望每次运行时结果都有所不同,我同意时间是种子的好方法。