给出一个以相等的概率生成1到6的数字的函数。通过对给定函数进行运算来找到一个函数,以便它以相等的概率产生从1到12的数字。
我的方法:
我正在维护一个计数变量。如果count是偶数,则我将0加到f()
中将6加。但是,f()
的调用次数不受限制,因此,我们不能使用count变量。
答案 0 :(得分:0)
f 以等概率绘制从1到6的整数。现在,您要将其扩展为1到12之间的整数。 因此,引入 g ,它以相等的概率从0到1绘制一个整数。
(g \ times 6)+ f
应显示所需的行为。
答案 1 :(得分:0)
让f6()
是以相等的概率从1到6生成值的函数。
我们可以调用f6()
两次,并将结果存储在两个单独的变量a
和b
中。
现在,通过使用表达式(a + (b&1)*6)
,我们可以等概率生成1到12之间的数字。
说明:
a
和b
的范围是1到6。因为f6()
产生概率相同的数字。
(b&1)
将分别根据b是偶数还是奇数返回0
或1
的可能性。
现在,如果b&1
为0
,则自(b&1)*6 = 0
起,我们的范围是1到6。因此,结果只能是值1、2、3、4、5、6。
如果b&1
是1
,则结果只能是值为(b&1)*6 = 6
的值7、8、9、10、11、12。