问题描述
中午午休时候,看了csdn首页上那个选出一亿个数字中一万个最大的数,感觉很有意思,闲着没事,自己也写点小程序玩,玩着玩着,有点小问题了。其中一段是我用个10000的数组储存random抛出来的数,然后选择排序,函数我敢保证是没问题的。random.next(0,10000)random.next(0,100000)random.next(0,1000000)最后列出数组的前200个,偶然发现next范围越大,0出现的频率越多,从概率上来讲不是应该少了么,可最厉害的一次,我竟然抛了一百多个0......难道是我自己的错觉么?还是random()有某处小bug?还是我人品爆发?
解决方案
解决方案二:
按理说应该不会出现这种情况,这具体得看代码了,比如Random对象的初始化最好放在循环外层。.NET中的Random采用高德纳的减法随机数生成算法实现的,这种算法比线性同余算法要好一些,应该不会出现那么多重复的0值。
解决方案三:
人品爆发
时间: 2024-09-20 14:25:43