求Random(n)算法调用flip()的平均随机比特使用量(期望)
求解Random(n)算法的期望随机比特调用次数
已知flip()函数以相等概率返回0或1,且可通过循环不变式证明Random(n)函数能等概率返回0到n-1的整数,算法实现如下:
function Random(n): v = 1; c = 0; loop v = 2v; c = 2c + flip(); if (v >= n) then if (c < n) then return c; else v = v - n; c = c - n; end if end if end loop end function
现需求解该算法平均使用的随机比特数,即调用flip()函数的期望次数。目前已知需经过⌈logn⌉+1次将v翻倍使其达到n量级,此时算法以n/v的概率结束;若未结束则继续循环,但无法确定后续v翻倍后是否≥n及对应概率,特此求助。
内容的提问来源于stack exchange,提问作者user22785544
相关产品推荐
相关产品推荐

