
210
|
第
8
章
就可以从运行中获得相同的结果。本书的其中一位作者曾对一个庞大的证券组合进行复
杂的蒙特卡罗分析。用户抱怨每次程序运行时得到的结果略有不同。作者回答:分析完
全由随机数驱动,所以输出中当然存在随机性。解决方案是在程序开始时将随机数生成
器设置为已知状态。这样,它每次都会产生相同的(准)随机数,从而产生一致的、可
重复的结果。
在 R 中,set.seed 函数将随机数生成器设置为已知状态。该函数接受一个整型参数,
它可以是任何正整数,但必须使用相同的整数才能获得相同的初始状态。
该函数没有返回值。它在幕后运行,初始化(或重新初始化)随机数生成器。这里的关
键是,使用相同的种子(参数值),就在同一个地方重新启动随机数生成器:
set.seed(165) # Initialize generator to known state
runif(10) # Generate ten random numbers
#> [1] 0.116 0.450 0.996 0.611 0.616 0.426 0.666 0.168 0.788 0.442
set.seed(165) # Reinitialize to the same known state
runif(10) # Generate the same ten "random" numbers
#> [1] 0.116 0.450 0.996 0.611 0.616 0.426 0.666 0.168 0.788 0.442
当你设置种子值并生成固定随机数序列时 ...