日期:2014-05-18  浏览次数:20861 次

关于Random()的问题
Random rand = new Random(System.Environment.TickCount / (count + 1) + System.Environment.TickCount - s);
s = rand.Next(20);
Random()里面的参数是什么意思呢?

------解决方案--------------------
随机数种子
随机数事实上并不是真正的随机数 他是软件通过一个函数生成的 这个函数的参数就叫做随机数种子 如果是无餐构造函数那么Random就会用系统时间作为随机数种子
随机数产生的函数从概率上是接近随机分布 我们一般叫做伪随机数 但事实上离正在的随机数还是有距离
这里他构造的随机数种子其实也就是为了尽量是生成的伪随机数更加像真正的随机数
------解决方案--------------------
参数本身没什么要求 一个int32类型的变量就可以了
让伪随机数更像真随机数的方式我自己觉得有一个很简单的方法,就是你本身给这个参数赋值一个伪随机数,这个伪随机数的随机数种子又是另外一个伪随机数 但是如果不是某些方面要求特别严格 其实没必要这样子做 我们比方伪随机函数的随机概率是99.99% 我们把种子变成伪随机数 无非就是变成99.9999% 但是永远不会变成100% 也就是真随机数
探讨

这个构造函数里的参数有什么要求呢?
怎么才能让他生成的伪随机数更像正真的随机数呢