如何使用生成 1 到 3 之间数字的函数生成 1 到 9 之间的数字?得到1和9之间任意数的概率一定是相同的,所以rand3()+rand3()+rand3()不是一个好的方案。
最佳答案
尝试类似笛卡尔的积:
Rand9() = 3 * (Rand3() - 1) + Rand3()
使用 3 * (Rand3() - 1) 可以使子区间 1-3、4-6 和 7-9 的可能性相同。使用 + Rand3(),您将在该子区间上平均选择。
写成产品:
3 * (Rand3() - 1) + Rand3() -> {1, 4, 7} X {+1,+2,+3} -> {1,2,3,4,5,6,7,8,9}
关于algorithm - 使用 Rand3() 的随机生成器 Rand9(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29773467/