1

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

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

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

4

1 回答 1

2

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

没有(完全正确的)解决方案可以在恒定时间内运行,因为 1/7 是以 5 为底的无限小数。

现在问亚当罗森菲尔德为什么这是真的:)

于 2014-01-27T14:13:04.507 回答