使用硬币翻转生成随机数,同时保证终止

时间:2014-01-27 13:45:03

标签: algorithm random probability random-sample coin-flipping

使用硬币翻转生成均匀随机数0..n的常用方法是以明显的方式构建一个大于n的最小幂的rng,然后每当此算法生成大于n-1的数时扔掉那个号码然后再试一次。

不幸的是,这是无穷大的最坏情况运行时。

在保证终止时有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

引用此答案https://stackoverflow.com/a/137809/261217

  

没有(完全正确的)解决方案将以常量运行   时间量,因为1/7是基数5中的无限小数。

现在问Adam Rosenfield为什么这是真的:)