当前位置: 移动技术网 > IT编程>开发语言>.net > paip. C#.NET循环获取不同随机数的方法根据时间

paip. C#.NET循环获取不同随机数的方法根据时间

2018年11月04日  | 移动技术网IT编程  | 我要评论

跟着媳妇当保姆,修路挖出16.7米蛇精,冷冻卵子需要多少钱

paip. c#.net循环获取不同随机数的方法根据时间


作者attilax ,  email:1466519819@qq.com


一般使用random ra=new random();就可以。。


但是如果应用在一个for循环中,取到的多个随机值就基本相同了。原因如下:


用时间做随机种子并不保险,如果应用程序在一个较快的计算机上运行,则该计算机的系统时钟可能没有时间在此构造函数的调用之间进行更改,random 的不同实例的种子值


可能相同

 


解决思路: 循环体中加thread.sleep(1);
----------
这样就使得循环中的时间不同了,然后取ticks,截取后9位为int做种子,保证每次种子不同,可取到随机值 。。


  thread.sleep(1);
     long tick = datetime.now.ticks;//一个以0.1纳秒为单位的时间戳,18位
    int seed = int.parse(tick.tostring().substring(9)); //  int类型的最大值:  2147483647

 

 


完整
-------

 


 for (int i = 0; i < 20; i++)
        {
        
            thread.sleep(1);
            long tick = datetime.now.ticks;//一个以0.1纳秒为单位的时间戳,18位
            int seed = int.parse(tick.tostring().substring(9)); //  int类型的最大值:  2147483647
            //或者使用unchecked((int)tick)也可
            random ran = new random(seed);


            int iresult;
            int iup = 100;
            int idown = 50;
            iresult = ran.next(idown, iup);
            response.write(iresult + "<p>");
            response.write(   seed.tostring() + "---" + unchecked((int)tick) + "<p>");
        }

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网