摘要: 今天长见识了,我一直以为想要取0~N-1之间均匀分布的随机数,用rand()%N就可以了。(N不超过RAND_MAX)事实是在N不大的时候,基本上是均匀分布,但是并不确切。因为rand()产生0-RANDMAX之间的整数,但是RAND_MAX通常不是N的倍数。导致求余数的时候,有些数的概率高那么一点点。当然当N小的时候,因为RAND_MAX很大(通常是0x7FFF),这个概率的差别很小。比如N=10时,会导致0~7的概率比8~9的概率高0.0000305。所以当N较大,或者N超过RAND_MAX时,就不能用这个方法啦。在C++的random库里有uniform_int_distribution 阅读全文
posted @ 2013-02-10 17:53 张拯 阅读(175) 评论(0) 推荐(0) 编辑