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;