【发布时间】:2012-03-13 05:54:05
【问题描述】:
我正在创建一个程序,该程序创建几个具有随机确定颜色的面板,这些面板将每 20 毫秒左右增加/减少一些随机常数,以创建平滑、起伏的颜色。为此,我一直在使用 Random 类的 Next(int) 方法。对于单个实例,这非常有效——每次我运行程序时,我都会得到不同的颜色以不同的速率变化。当我尝试创建多个面板时,问题就出现了——如果不是全部的话,大多数面板的外观和行为都相同,这意味着所有随机生成的数字都是相同的。我假设这是快速连续生成所有伪随机数的结果,导致它们都基于同一个种子。
有没有比使用 Random 类快速连续生成随机整数以确保它们不相同更好的方法?如果 C# 中还没有内置任何方法,是否有任何直接的方法来开发伪随机数生成器(请记住,这是我第一次尝试使用 C#)?
【问题讨论】:
-
您是否每次都重新初始化/重新创建 PRNG 对象?一个像样的 PRNG 不应该可靠地产生与您描述的相同的数字。