首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

用rand5()失去rand7()

2012-07-30 
用rand5()得到rand7()假设 rand5() 能均匀的产生 1-5 的随机数问怎么用它写 rand7() (返回 1-7 的随机数)

用rand5()得到rand7()
假设 rand5() 能均匀的产生 1-5 的随机数
问怎么用它写 rand7() (返回 1-7 的随机数)

看过一个解法说用 rand5() 产生 0-24 的随机数 然后再利用拒绝性采样(rejection sampling)得到 rand7
不知道为什么需要得到 0-24 的?

还有什么其他好方法?并请解释一下?

[解决办法]
本质就是5进制数跟7进制数的转换,把多余7的倍数的那部分除掉就可以了
[解决办法]
如果调用两次rand5, 这样会产生5 * 5 = 25中组合,编号为1~25,将其中7种标记为“好的”。

然后重复两次调用rand5,如果有好的出现,就找到了一个 rand7.

理论上这种方法是理论无偏的,二楼的方法得到的随机数严格说来是有偏的,除非精度无限。

热点排行