←
PDF 1085 / 1160 Simulations are deterministic if what occurs at any time is completely determined by the state o
→
English · PDF 1085
Original PDF page 1085
中文 · PDF 1085

如果系统在任意时刻发生的情况完全由系统状态决定,则模拟是确定性的。相反,如果任意时刻发生的情况可能受到本质上不可预测的偶然因素影响,则模拟是随机性的。因此,随机模拟要求在程序内部生成随机变量(或结果)。考虑到计算机程序是在确定性硬件上运行的确定性指令序列,这看似是一个无法满足的要求。然而,可以生成确定性且可重复、但看起来是随机的数列。这些伪随机数对模拟非常有用,对诸如所谓的蒙特卡罗数值方法等其他用途也很有用。

大多数现代计算机都包含一个软件功能,用于生成在区间上服从均匀分布的伪随机数 $(0, 1)$ :

$$f_U(u) = \begin{cases} 1 & (0 < u < 1) \ 0 & (\text{otherwise}) \end{cases}$$

相继的变量 ${U_1, U_2, \dots}$ 看起来是不相关的,并且,尽管该序列中存在某种结构(而且该序列最终会自我重复),但这些缺陷在实践中很少引起问题。

非均匀分布的随机变量是通过对序列 ${U_1, U_2, \dots}$ 应用各种变换得到的。图 13.34 包含伪代码

{Bernoulli random variable X, parameter p.}
U ← rnd
if U < p then X ← 1 else X ← 0 endif{Binomial random variable X, parameters n,p.}
X ← 0
for i is 1 to n do
    U ← rnd
    if U < p then X ← X + 1 endif
endfor{Exponential random variable X, parameter L, uses log function to base e.}
U ← rnd
X ← − (log(U))/L{Poisson random variable X, parameter L.}
X ← −1
W ← 1
P0 ← exp(−L)
repeat
    X ← X + 1
    U ← rnd
    W ← W*U
until W < P0{Normal random variable X, parameters mean, sd.}
T ← 0
for i is 1 to 12 do
    U ← rnd
    T ← T + U
endfor
X ← sd*(T − 6) + mean

图 13.34
非均匀随机变量的伪代码清单。