习题 2.4
题目:

Answer:
要求生成三维随机向量 \((x_1, x_2, x_3)\),其密度函数为:
\[ f(x_1, x_2, x_3) = \frac{4}{3\pi} \quad \text{对于} \quad x_1^2 + x_2^2 + x_3^2 < 1 \]
这是一个在单位球面内的均匀分布问题,注意到\(f_0 = \sup_{x_1,x_2,x_3} f(x_1,x_2,x_3) = \frac{4}{3\pi}\),且\(-1<x_i<1,i=1,2,3\)
step1:生成三个在\([0,1]\)上的均匀分布的随机数\(U_0,U_1,U_2,U_3\)
step2:计算\(X_1 = 2U_1-1,X_2 = 2U_2-1,X_3 = 2U_3-1\),则\(X_1 \sim U(-1,1),X_2 \sim U(-1,1),X_3 \sim U(-1,1)\)
step3:如果\(X_1^2 + X_2^2 + X_3^2 < 1\),则输出\((X_1,X_2,X_3)\),否则返回step1
伪代码:
while(TRUE):
U_i = GenerateUniformRandomNumber(0, 1),i = 0,1,2,3
X_j = 2 * U_j - 1,j=1,2,3
if (X_1^2 + X_2^2 + X_3^2) < 1 :
return (X_1, X_2, X_3)
else:
continue
习题 2.5
题目:

设坛子中有 \(n\)个不同颜色的球,共计 \(r\)种颜色,其中第 \(i\)种颜色的球有 \(n_i\) 个,\(n=\sum_{i=1}^r n_i\)。从坛子中随机无放回地抽取 \(m\)个球,设随机变量 \(X_i\) 表示取出的第 i种颜色的球的个数,试产生随机向量 \(\left(X_1, X_2,\cdots, X_r\right)^T\) 的随机数。
Answer:
该题显然适合用条件分布抽样法,\(X_1\)的分布为超几何分布,即:
\[
P(X_1 = k) = \frac{C_{n_1}^k C_{n-n_1}^{m-k}}{C_n^m},k=0,1,\cdots,min(n_1,m)
\] 给定\(X_1 = x_1\)后,\(X_2\)的分布为超几何分布,即:
\[
P(X_2 = k|X_1 = x_1) = \frac{C_{n_2}^k C_{n-n_1-n_2}^{m-x_1-k}}{C_{n-n_1}^{m-x_1}},k=0,1,\cdots,min(n_2,m-x_1)
\]
以此类推,给定\((X_1,X_2,\cdots,X_{i-1})=(x_1,x_2,\cdots,x_{i-1})\)后,\(X_i\)的分布为超几何分布,即:
\[
P(X_i = k|(X_1,X_2,\cdots,X_{i-1})) = \frac{C_{n_i}^k C_{n-\sum_{j=1}^{i-1}n_j}^{m-\sum_{j=1}^{i-1}x_j-k}}{C_{n-\sum_{j=1}^{i-1}n_j}^{m-\sum_{j=1}^{i-1}x_j}},k=0,1,\cdots,min(n_i,m-\sum_{j=1}^{i-1}x_j)
\] 于是产生随机数可按照以下流程:
step1:产生随机数\(X_1\)的超几何分布
step2:给定\(X_1,X_2,\cdots,X_{i-1}\)后,产生随机数\(X_i\)的超几何分布
伪代码:
初始化:
n_i = N_i ,i = 1,2,...,r
sum_x = 0
sum_ni = n_1
抽样:
for i = 1 to r:
n_max = min(n_i,m-sum_x)
prob_distribution = dhyper(0:n_max,n_i,n-sum_ni,m-sum_x)
X_i = sample(0:n_max, size = 1, prob = prob_distribution)
sum_x = sum_x + X_i
sum_ni = sum_ni + n_i
X = (X_1,X_2,...,X_r)