C#随机数产生


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

Random ra = new Random() ;
Console.WriteLine(ra.Next());
Console.WriteLine(ra.Next(10))
生成规则

* 获取电脑启动以来的时间,与一固定值进行连续减法操作(0x9a4ec86 – Math.Abs(Environment.TickCount)),所得结果均匀的存放到一56位数组内
* 每次取时,第一次取SeedArray[0] – SeedArray[21]的值,然后顺移,故第二次取SeedArray[1] – SeedArray[22]的值….
* 因取的启动时间的间隔最小单位是0.5秒,故在这0.5秒内,若连续构造Random,产生随机数,因启动时间相同,故每次的SeedArray[0] – SeedArray[21]的值也会相同。为避免这种情况,应构造一个Random,连续用Next()取值,这样会递邓56位数组中的下一次相减数。

注:因产生数组的方法是固定的,传入同一启动时间,所得数组值也是固定的,故知C#随机数是伪随即数,这也符合计算机程序的特性的确定性,即:即对于相同的输入只能得出相同的输出。

生成一系列数字:0x9a4ec86 – Math.Abs(Environment.TickCount)