通常情况下,很多人喜欢用一下的方式产生随机数,然后得到的随机数都是一样的,代码如下。
            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());
            }

这种方式比较好。

posted on 2011-08-10 15:52  lorgine  阅读(175)  评论(0编辑  收藏  举报