使用rand生成rand(9)(3)

jac*_*007 2 random probability

你有一个函数rand(3),它产生从1到3的随机整数.使用这个函数,构造另一个函数rand(9),它产生从1到9的随机整数.

Amb*_*ber 20

这是一个简单的解决方案:

rand(3) + 3*(rand(3) - 1)
Run Code Online (Sandbox Code Playgroud)

你想要这样做的原因是它提供了从1到9的所有可能值的均匀分布.

有些人可能会想做rand(3) * rand(3),但实际上并没有产生一些数字 - 例如7.它也分布不均匀它的数字不会产生.

类似地,有些人可能会这样做rand(3) + rand(3) + rand(3),但这也不会生成所有数字(它永远不会生成1或2),并生成具有不成比例频率的其他数字(5生成频率远高于9).

  • @Dani它将输出空间划分为3个大小相同的块(这就是后半部分所做的),然后同样从其中一个块中选择一个元素(这就是前者的作用).每个块有1/3的机会被选中,每个块中的每个项目有1/3的机会被选中,因此每个项目总体上有1/9的机会被选中. (7认同)
  • 您是否有证据证明您的解决方案是均匀分布的? (2认同)