[原]等概率随机函数

    最近面试呀,肯定又接触了不少以前没接触过的东西。这不,又遇上一个,整理了一段时间,就准备发上来啦。

    关于等概率随机函数,以前都是用随机数生成函数 直接给定范围,生成随机数。没有多想。

    这个的主要意思其实就是  用一个已知的等概率随机函数去完成另一个函数。

eg:已知函数 f5() 该函数的作用是生成一个 1-5 的随机数。请用该函数实现另一个函数 f7() 产生 1-7 的随机数。

ps:看上去好像实际过程中这玩意其实没什么用。1-7 rand 一下不就有了么。。其实这里面 比较重要的还是 了解 数学思想在实际中的应用。数学用的熟练了,就能写出比这有用多的东西啦。

    1. 使用一个算数式 扩展 f5() 产生的随机数。

    例如 : ( f5()-1 ) + f5()

    OK,这样一计算我们就发现,这个结果已经被扩展到了  1-9。但是!有的朋友应该注意到了,1-9并不是等概率产生的。我们来看产生的数字表格。

    

1 2 3 4 5
0 1 2 3 4 5
1 2 3 4 5 6
2 3 4 5 6 7
3 4 5 6 7 8
4 5 6 7 8 9

    这样的话 最低概率 是 1 出现的概率是 1/25 最高是 5出现的概率 5/25。

Continue reading

Code | wwpeng | | (14) |