请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
计算机并不能产生真正的随机数,如果你不设种子,计算机会用系统时钟来作为种子,如果你要模拟什么的话,每次的随机数都是不一样的,这样就不方便你研究,如果你事先设置了种子,这样每次的随机数都是一样的,便于重现你的研究,也便于其他人检验你的分析结果。
set seed只对当前的命令有效
再加上一个命令就清楚了:
set seed 200
gen x5=invnorm(uniform())*6+100
这样一来,产生的x5与x1应该是一致的
随机数产生原理 ============== 通常有两种方法 1.平方取中法 1)从一个n位数x开始,称为种子 2)将它平方得到一个2n位数(必要时前面加0) 3)取中间的n位数做为下一个随机数 这种方法有一个缺点就是产生的随机数会趋向0 2.线性同余法 选择三个整数a,b,c,给定初始种子X(0) 按下列规则生成数列 X(n+1)=( a * X(n) + b )mod(c) 这种方式产生的随机数会出现循环 但是只要我们把c取得足够大就可以保证不会在我们运算中出现循环 很多计算机都是利用这个原理产生随机数的 只是c值取得很大,c=2^31
来源于百度知道http://zhidao.baidu.com/question/61979557.html
[此贴子已经被作者于2008-8-18 22:01:46编辑过]
线性同余法一般有介绍
弱弱地问:set seed #,为什么#一般都很大呢?
如果设为一位数,会不会有问题?如设为1。
heavenicefox 发表于 2008-7-14 18:49 计算机并不能产生真正的随机数,如果你不设种子,计算机会用系统时钟来作为种子,如果你要模拟什么的话,每 ...
eblog 发表于 2008-7-14 20:07 set seed只对当前的命令有效再加上一个命令就清楚了:set seed 200gen x5=invnorm(uniform())*6+100这样一来 ...
楚天江南客 发表于 2018-1-1 09:04 我想问一下种子值的设置是随意的嘛?任意自然数都可以吗?