算法导论: 第5章

5.1-2 生成Random(a,b)

    运行b-a次Random(0,1),累加和,最后再加a。利用公式F(z) = w解出z即可,其中F(z)为目标分布,w为区间0-1内的均匀分布。

5.1-3 等概率生成0和1

   Biased-Random 以概率p输出1,以概率1-p输出0,

  则1-Biased-Random 以概率p输出0,以概率1-p输出1

  则调用Biased-Random后接着调用1-Biased-Random,出现的概率为

   调用结果    00      01      10    11

   出现概率    (1-p)*p    (1-p)*(1-p)     p*p    p*(1-p)

则1出现的期望E[1] = (1-p)*(1-p) + p*p + 2*p*(1-p) = 1;

  0出现的期望E[0] = 2(1-p)*p + (1-p)*(1-p) + p*p = 1;

故调用一次(Biased-Random) + (1-Biased-Random)就可以让0和1出现的概率相等。连续调用这个组合,统计0和1出现的个数,直到它们出现的个数不相等。此时输出出现次数多的那个。每次调用产生0和1个个数相等的概率为1-2*p*(1-p)。伯努利实验期望为O(1/(1-2*p*(1-p)))

网上还有另外一种解法:运行Biased-Random两次产生x和y,连续运行直到两个数不等,然后输出x。显然,产生0的概率为(1-p)*p,产生1的概率为p*(1-p),二者产生概率相等。每次产生两个不等的数,说明实验成功,故是一个2*p*(1-p)概率的伯努利实验,期望为O(1/2*p*(1-p))。

但由于2*p*(1-p)<1/2,所以后者的期望大,故后者用的次数更少。

5.3-5 Random(1,n^3)所有元素都唯一的概率至少为1-1/n

参见http://photo.blog.sina.com.cn/list/blogpic.php?pid=932e6e55hc37388f5a11d&bid=932e6e5501015a80&uid=2469293653

5.1 概率计数

(a)令Vn表示n次自增操作后的值,令Xi表示i次自增操作后自增后和自增前数值的差,则有Vn = X1 + X2 + ... + Xn。

而E[Xi] = 0*(1-1/(n(i+1)-n(i))) + (n(i+1)-n(i))*(1/(n(i+1)-n(i))) = 1。得E[Vn] = n。

(b)n(i) = 100i,则n(i+1)-n(i) = 100;概率为1/100 。

则Var[Xi] = E[Xi^2] - E[Xi]^2 = (0^2*99/100) + (100^2) *1/100 - 1^2 = 99。

故Var[Vn] = 99n;

posted @ 2014-03-30 17:41  鬼蜮流风  阅读(302)  评论(0编辑  收藏  举报