2020-09-18:如何利用Stata生成随机数?
2020-09-18 本文已影响0人
WatermelonCa
1. 生成(0,1)之间均匀分布的伪随机数的函数为:runiform()
dis runiform()
dis runiform()
dis runiform()
每次都得到一个大于零小于1的随机数。
2.生成整数随机数
若要生成一位数的随机数(即:0,1,2,3,……,9),可以取小数点后第一位数,通常使用如下命令:
dis int(10*runiform())
若要生成两位数的随机数(0~99),则取小数点后两位,命令如下:
dis int(100*runiform() )
生成任意均匀分布随机数(a,b),可由下述函数得到:
a+(b-a)*runiform()
生成任意均匀分布整数随机数(a,b),可由下述函数得到:
a+int((b-a)*runiform())
3.但要注意的是,电脑中给出的随机数并不是真正的随机数,而是伪随机数,因为它是按照一定的规律生成的。
如果给定基于生成伪随机数的初始数值(seed),即:set seed #,则对相同的初始数值,生成的伪随机数序列完全一样。
注意:var1 和 var2 数值不一样clear
set obs 10
gen var1=runiform()
gen var2=runiform()
注意:var3 和 var4 数值一样,但均与var5不同set seed 1234
gen var3=runiform()
set seed 1234
gen var4=runiform()
gen var5=runiform()
注:var7 与 var3, var4 数值一样,但var6 与 var7 数值均不相同。set seed 1235
gen var6=runiform()
set seed 1234
gen var7=runiform()