1 0 随机模拟 只要你自己试试模拟随机现象几次,就会加强对概率的了解,比读很多页的数理统计和概率论的文章还有用。学习模拟,不仅是为了解模拟本身,也是为更了解概率而了解模拟。 10.1 伪随机数 生成(0,1)之间均匀分布的伪随机数的函数为 u niform() di uniform() di uniform() di uniform() 每次都得到一个大于零小于 1 的随机数。 如果要生成一位数的随机数(即 0,1,2,3,4,5,6,7,8,9),可以取小数点后第一位数,通常用下面的命令 di int(10*uniform()) 两位随机数(0-99)则取小数点后两位小数,即 di int(100*uniform()) 任意均匀分布随机数(a,b)由下述函数得到 a+(b-a)*u niform() 任意均匀分布整数随机数(a,b)由下述函数得到 a+int((b-a)*u niform()) 也可以同时生成多个随机数,然后将该随机数赋给某个变量。要注意的是,电脑中给出的随机数不是真正的随机数,而是伪随机数,因为它是按照一定的规律生成的。如果给定基于生成伪随机数的初始数值(即 set seed #),则对相同的初始数值,生成的伪随机数序列完全一样。 *============================begin==================================== clear set obs 10 gen x1=uniform() gen x2=uniform() //注意到 x1 与 x2 不一样 set seed 1234 gen y1=uniform() set seed 1234 gen y2=uniform() gen y3=uniform() //注意到 y1 与 y2 一样,但均与 y3 不同 set seed 5634 gen z1=uniform() set seed 1234 gen z2=uniform() //注意到 z2 与 y1,y2 一样,但 z1 与 z2 不同 list *============================end==================================== 10.2 简单模拟 利用随机数字表或者电脑软件中的随机数字,来模仿机遇现象,叫模拟(simu lation)、 一旦有了可靠的概率模型,模拟是找出复杂事件发生概率的有效工具。一个事件在重复结果中发生的比例,迟早会接近它的概率,所以模拟可以对概率做适当的估计。 例 1:如何执行模拟 掷一枚硬币 10次,结果中会出现至少 3个连续正面或者至少 3个连续反面的概率是多少? 思考: (1) 猜想这个概率大约是多少? (2) 如何从理论上计算出这个概率? (3) 如何模拟计算这个概率? 第一步:提出概率模型。 每一次掷,正面和反面的概率各为 0.5 投掷之间,彼此是独立的。也就是说,知道某一次掷出的结果,不...