楼主: kwing2900
63234 30

[编程问题求助] [求助]请问如何在STATA里产生随机数 [推广有奖]

11
arlionn 在职认证  发表于 2010-5-19 20:31:02
ljt80008 发表于 2008-8-11 10:13
set seed 20070816这个命令起到什么作用呢?尤其是数字20070816是什么意义呢?
         
   *- 随机数发生器
   *                        
   * X_j = (a*X_{j-1} + c) mod m  (j = 1,2, ...)
   *          -------  
   *           种子
   * 如:
   *     X_j = (9*X_{j-1} + 3) mod 2^9 (j = 1,2, ...)  

     
   *- Stata中的随机数发生器:多个线性随机数发生器的组合
     * 参见 [D] Data Management Reference, p.213
     * George Marsaglia (1994) 32-bit pseudorandom number generator
     * KISS (Keep It Simple Stupid)
     *
     * X_j = (69069 X_j-1 + 1234567) mod 2^32        (1)
     * y_j = y_j-1(I+L^13)(I+R^17)(I+L^5)            (2)
     * z_j = 65184(z_j-1 mod 2^16) + int(z_j-1/2^16) (3)
     * w_j = 63663(w_j-1 mod 2^16) + int(w_j-1/2^16) (4)
     *
     * 随机数发生器:
     *
     *     R_j = (x_j + y_j + z_j + 2^16*w_j)  mod  2^32
     *
     * 初始值的设定:
     *   
     *  x_0 = 123456789    /*这就是所谓的“种子(seed)”,set seed # 改变的就是该值*/
     *  y_0 = 521288629
     *  z_0 = 362436069
     *  w_0 = 2262615
     *
     * 说明:
     *  (1) 每次使用set seed # 命令改变的是 x_0 的数值,而其他三个数值则不改变;
     *  (2) 为了保证随机数的质量,Stata会丢弃前100个随机数;
     *  (3) R_j/2^32 便可得到服从均匀分布[0,1)的随机数。

(http://www.pinggu.org/bbs/thread-377804-1-1.html)
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 100 + 8 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 100  论坛币 + 8  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

12
qiaohua 发表于 2010-5-30 16:10:20
Thank you all!

13
xge2000 发表于 2011-3-8 08:02:43
999999999999999999999999999

14
无尘第二 发表于 2011-3-20 16:02:53
班级共有30位学生,学号为1-30号,现在进行论文答辩。公平起见,对30位同学进行随机排序以决定答辩顺序,用STATA的什么命令可以完成任务?
谢谢

15
aolei 发表于 2012-3-19 18:54:06
无尘第二 发表于 2011-3-20 16:02
班级共有30位学生,学号为1-30号,现在进行论文答辩。公平起见,对30位同学进行随机排序以决定答辩顺序,用 ...
gen x=uniform()
sort x
gen n=_n
drop x
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 200 + 10 + 2 + 2 + 2 热心帮助其他会员

总评分: 经验 + 200  论坛币 + 10  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

16
无尘第二 发表于 2012-3-21 21:44:07
有问题,得到的是空白。。。。

17
aolei 发表于 2012-3-21 22:04:05
无尘第二 发表于 2012-3-21 21:44
有问题,得到的是空白。。。。
set obs 30

18
sungmoo 发表于 2012-3-22 06:09:23
set obs 30
gen x=uniform()
sort x
gen n=_n
drop x
clear
set ob 30
g id=_n
g x=uniform()
sort x
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 100 + 8 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 100  论坛币 + 8  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

19
无他 发表于 2012-3-22 10:08:18
学习了
大方无隅

20
snowfighting 发表于 2012-4-21 15:15:42
liuxb 发表于 2008-8-19 20:12
In stata version 10.1, uniform() has been renamed to runiform().
那就是uniform()=runiform(),是这样的么?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-30 17:20