algorithm - 将随机范围从 0-2 缩小到 0-1
问题描述
随机生成器从列表中生成值:0、1、2(所有三个值的概率相等)。
如何从生成器的不超过十次使用中以相等的概率获得随机数 0 或 1。
解决方案
您的最终目标是仅在给定一个 3 面骰子的情况下,使用固定数量的 3 面骰子掷出一个 2 面骰子。
但是,无论您滚动多少次,这都是不可能的,因为 2 不能整除 3(并且两者都是素数)。您可以在这里做的最好的事情是继续拒绝 2(并且连续获得n 2 的概率是 1/3^ n,该概率随着n的增加而迅速缩小)。
更一般地说,不可能使用 p 面骰子使用固定数量的 p 面骰子来滚动k 面骰子,除非“每个素数除k也除p ”(参见“模拟骰子”中的引理 3用骰子“B. Kloeckner。
另请参阅以下问题:
推荐阅读
- swift - 可观察的
> 到可观察的 rxswift - android - Android Flavors:在其他风味中使用风味的资源文件
- autohotkey - 无法在 PureRef 中发送 Ctrl+V
- flutter - 使用 easy_localization 和大翻译 json 文件进行 Flutter 测试
- data-science - 高斯混合模型
- css - 左侧的粘性位置在 React 应用程序中不起作用
- python-3.x - 如果任何列中存在特定条目,如何从父数据框制作数据框?
- node.js - assert.equal(3, result.result.n); TypeError:无法读取未定义的属性“n”
- java - 视频编解码器在 val outindex = decoder.dequeueoutputbuffer(bufferinfo, 10000) 处引发非法状态异常
- java - Windows 中的 Oracle Weblogic Java JDK