当前位置:  开发笔记 > 大数据 > 正文

System.Random继续返回相同的值

如何解决《System.Random继续返回相同的值》经验,为你挑选了2个好方法。

我正在使用System.Random对象,该对象在应用程序中使用固定种子进行实例化.我正在调用NextDouble方法,经过一段时间后,我得到0.0作为结果.

有没有任何补救措施,还有其他人遇到过吗?

编辑:我有一个种子用于整个运行,为了方便起见设置为1000.random.NextDouble被称为几十万次.它是一个优化器应用程序,可以运行几个小时,但这实际上发生在10-0分钟的执行之后.我最近添加了一些随机调用应用程序.



1> e.James..:

.NET中的随机数生成器不是线程安全的.其他开发人员已注意到相同的行为,一个解决方案如下(来自http://blogs.msdn.com/brada/archive/2003/08/14/50226.aspx):

class ThreadSafeRandom
{
    private static Random random = new Random();

    public static int Next()
    {
       lock (random)
       {
           return random.Next();
       }
    }
}



2> James Curran..:

你经常播种随机?它应该只在程序开始时完成一次.

并且一旦用给定值播种,它将始终产生完全相同的序列.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有