随机数是骗人的,.Net、Java、C为我作证(转)
原文链接: http://www.cnblogs.com/CielWater/p/3982076.html 几乎所有编程语言中都提供了"生成一个随机数"的方法,也就是调用这个方法会生成一个数,我们事先也不知道它生成什么数。比如在.Net中编写下面的代码: Random rand = newRandom(); Console.WriteLine(rand.Next()); 运行后结果如下: Next()方法用来返回一个随机数。同样的代码你执行和我的结果很可能不一样,而且我多次运行的结果也很可能不一样,这就是随机数。 一、陷阱 看似很简单的东西,使用的时候有陷阱。我编写下面的代码想生成100个随机数: for(int i=0;i<100;i++) { Random rand = new Random(); Console.WriteLine(rand.Next()); } 太奇怪了,竟然生成的"随机数"有好多连续一样的,这算什么"随机数"呀。有人指点"把new Random()"放到for循环外面就可以了: Random rand = newRandom(); for(int i=0;i<100;i++) { Console.WriteLine(rand.Next()); } 运行结果: 确实可以了! 二、这是为什么呢? 这要从计算机中"随机数"产生的原理说起了。我们知道