关于随机数

通常情况下,很多人喜欢用一下的方式产生随机数,然后得到的随机数都是一样的,代码如下。
            StringBuilder str = new System.Text.StringBuilder();
            for (int i = 0; i < 600; i++) {
                str.AppendLine((new Random().NextDouble()*100).ToString());
            }

后来发现稍微改一下,就可以实现真正的随机

Random rd = new Random();
            StringBuilder str = new System.Text.StringBuilder();
            for (int i = 0; i < 600; i++) {
                str.AppendLine((rd.NextDouble()*100).ToString());
            }

只有一点点的变化,就可以实现产生不同的随机数。

附上另外一种方法:

public static double GetRandom()
        {
            long tick = DateTime.Now.Ticks;
            Random ran = new Random(GetRandomSeed());
            return ran.NextDouble();
        }

        private static int GetRandomSeed()
        {
            byte[] bytes = new byte[4];
            System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
            rng.GetBytes(bytes);
            return BitConverter.ToInt32(bytes, 0);
        }

发现还是:

Random rd = new Random();
            StringBuilder str = new System.Text.StringBuilder();
            for (int i = 0; i < 600; i++) {
                str.AppendLine((rd.NextDouble()*100).ToString());
            }

这种方式比较好。

原文地址:https://www.cnblogs.com/lorgine/p/2133767.html