我正在尝试设计一个随机数生成器,该生成器可以生成0-11的随机数。但是我需要考虑到我已经有一个随机数生成器,可以生成0-5的随机数.0-11的所有数字都应为产生的概率相等。
我通过这个链接
在链接中,使用的方程式为5*foo() + foo() -5
其中foo()
生成数字1-5(而非0-5)
1. For each value of first foo(), there can be 5 possible combinations for values of second foo(). So, there are total 25 combinations possible.
2. The range of values returned by the above equation is 1 to 25, each integer occurring exactly once.
3. If the value of the equation comes out to be less than 22, return modulo division by 7 followed by adding 1. Else, again call the method recursively. The probability of returning each integer thus becomes 1/7.
现在我可以在上面的链接中定义的函数中更改将其模数乘以12的函数并递归该函数(如果数量超过24)吗?如果不是,那我就不明白什么是错的。
或者我遇到了这个
让我们调用f(6)
生成数字0-5的随机数生成器函数。
(f(6)+f(6)+f(6))%12;
如果没有什么替代的解决方案可以在做这个task.Maybe我我扣除?我需要帮助的是缺少在这里something.The美中不足的是0-11之间的每个数字应该有generation.Other的相同的概率比f(6)
我不能使用任何其他function.Only数学操作。
有很多方法可以做到这一点,但在这种情况下,我会去:
f(6) + 6*f(2)
在哪里
f(2) = f(6)%2
该概率是均匀的,因为您有一个均匀的概率获得一个从0到5的数字,并且具有一个均匀的概率将其移到6-11区间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句