使用给定函数找到新函数,该函数生成给定函数输出的两倍

find new function using given function that generates twice the output of given function

给定一个函数,它以相等的概率生成从 1 到 6 的数字。通过对给定函数进行操作来找到一个函数,使其以相等的概率产生从 1 到 12 的数字。

我的做法: 我正在维护一个计数变量。如果 count 是偶数,那么我在 f() 上加 0,否则我在 f() 上加 6。但是 f() 的调用次数是无限的,所以我们不能使用计数变量。

f以等概率抽取1到6的整数。现在你想把它扩展到 1 到 12 之间的整数。 所以引入g,从0到1等概率抽取一个整数

(g \times 6) + f

should show the desired behaviour.

f6()为以等概率生成从1到6的值的函数。 我们可以调用 f6() 两次并将结果存储在两个单独的变量 ab 中。

现在使用表达式(a + (b&1)*6),我们可以等概率生成从1到12的数字。

解释:

ab 的范围从 1 到 6。因为 f6() 生成的数字概率相等。

(b&1) 将 return 01 的可能性相同,具体取决于 b 是偶数还是奇数。

现在,如果 b&10,自 (b&1)*6 = 0 以来,我们的范围从 1 到 6。因此,结果只能是值 1、2、3、4、5、6。

如果 b&11,结果只能是值 7、8、9、10、11、12,如 (b&1)*6 = 6