摘要:
先举一个之前看过的例子:(引自http://gaofen100.iteye.com/blog/1294993)给一个方法,比如 rand5(), 它能够等概率生成 1-5 之间的整数。 所谓等概率就是1,2,3,4,5 生产的概率均为 0.2 。现在利用rand5(), 构造一个能够等概率生成 1- 7 的方法?思路:很多人的第一反应是return rand5()+rand5()%3; 这个实现确实能产生1-7之间的随机数,但是问题在于分布是不均匀的。rand5()%3产生0的概率是1/5,而产生1和2的概率都是2/5。所以这个实现产生6和7的概率要大于产生5的概率。 这里有两个特别重要的.. 阅读全文