【问题标题】:random number using another random function [duplicate]使用另一个随机函数的随机数[重复]
【发布时间】:2014-10-13 17:29:45
【问题描述】:

我最近在一次采访中被问到这个问题:

给你一个公平的 Randon5() 函数,它以相同的概率返回 1-5 之间的数字。现在您需要使用 Random5() 编写一个公平的 Random7() 函数,该函数将返回 1-7 之间的数字,没有其他可以使用。

提前致谢。

【问题讨论】:

  • 我必须说,重复问题的答案数量和质量令人震惊。

标签: algorithm random probability


【解决方案1】:

一般来说,不可能在有界的有限时间内做到这一点,因为 7 不是 5 的幂。你可以这样做,以使过程永远运行的概率为 0,即它会终止,但它只是一个什么时候的问题。

其中一种方法是运行 1-5 生成器两次以获取 1 到 25 之间的随机数。如果该数字大于 21,则重复。否则,如果您得到一个介于 1 和 21 之间的数,则在除以 7 时取余数并加 1。由于 7 除以 21,这将给您一个介于 1 和 7 之间的统一随机数。

每次尝试获取 1 到 21 之间的数字时,失败的几率只​​有 4/25。因此,在成功之前您必须迭代该过程的预期次数少于 2。

【讨论】:

    猜你喜欢
    • 2013-11-09
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 2019-02-10
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多