(我做了一次搜索,并没有看到重复。如果有的话我会提前道歉。)
我需要重复调用执行某些模拟的方法。此方法接受一些静态变量作为参数,并返回从随机数(double
)(0.01 - 100.00)派生的计算结果。
但是,假设Random
类构造函数将其种子基于当前系统时间,如果我连续25次调用该方法,那么我可以将75.01返回到结果所有25次。
是否有一种相对简单的方法可以在每次方法调用时获得几乎保证不同的数字?
我怀疑这有点容易实现,我只是不知所措。
谢谢!
答案 0 :(得分:6)
保留Random
类的实例,并在每次需要新的随机数时调用NextDouble
。你不会重复得到相同的数字。
答案 1 :(得分:1)
假设你实际上已经证明你的节目在每次通话时都可以获得75.01(或类似的东西)......
你最好的选择可能只是创建一个Random
实例,如果你担心构造函数中的种子,而不是每个函数调用一次(这听起来像是当前正在发生的事情) )。实例可能必须是静态的和私有的......
答案 2 :(得分:1)
前几天我遇到了同样的问题,我正在重新初始化我的随机对象并获得重复数据。仅初始化对象一次并在程序的整个生命周期中使用它。
答案 3 :(得分:0)
以下是C#中link算法实现的Mersenne Twister。你应该能够快速得到它
答案 4 :(得分:-2)
如果您的代码对时间不太敏感(在该块上),您可以在调用随机函数之间给出2ms或3ms的延迟。
HTH!