zoukankan      html  css  js  c++  java
  • paip. C#.NET循环获取不同随机数的方法根据时间

    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>");
            }

  • 相关阅读:
    ES6 Symbol类型 附带:Proxy和Set
    why updating the Real DOM is slow, what is Virtaul DOM, and how updating Virtual DOM increase the performance?
    React高级指南
    池(Pool)
    计算机网络Intro
    React基础
    CommonJS 与 ES6 的依赖操作方法(require、import)
    webpack初识(biaoyansu)
    关于时间安排贪心算法正确性的证明
    DP总结
  • 原文地址:https://www.cnblogs.com/attilax/p/15199682.html
Copyright © 2011-2022 走看看