楼主: swnyee
47105 19

[编程问题求助] [求助]产生随机数,种子数什么意思? [推广有奖]

  • 0关注
  • 0粉丝

已卖:35份资源

初中生

61%

还不是VIP/贵宾

-

威望
0
论坛币
842 个
通用积分
0.0008
学术水平
3 点
热心指数
3 点
信用等级
3 点
经验
194 点
帖子
19
精华
0
在线时间
0 小时
注册时间
2004-10-21
最后登录
2008-12-23

楼主
swnyee 发表于 2008-7-14 18:23:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
用Stata的uniform命令,产生随机数,张文彤、赵耐青的书上先是设置种子数<br/><br/>如:set seed 100,<br/><br/>请问这是什么意思呢?对结果有什么影响<br/>
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:随机数 Uniform 是什么意思 Stata seed 影响

沙发
heavenicefox 发表于 2008-7-14 18:49:00

计算机并不能产生真正的随机数,如果你不设种子,计算机会用系统时钟来作为种子,如果你要模拟什么的话,每次的随机数都是不一样的,这样就不方便你研究,如果你事先设置了种子,这样每次的随机数都是一样的,便于重现你的研究,也便于其他人检验你的分析结果。

已有 8 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
南开大学王梓淳 + 1 + 1 + 1 精彩帖子
sunshine2126 + 1 + 1 精彩帖子
liaiqing + 1 + 1 + 1 精彩帖子
王琴玥玥玥玥 + 1 + 1 精彩帖子
胡老 + 5 + 5 + 5 精彩帖子
treasure9009 + 1 + 1 + 1 观点有启发
Sunknownay + 100 + 10 + 1 + 1 + 1 热心帮助其他会员
yqm_first + 1 + 1 了解,谢谢!

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

藤椅
eblog 发表于 2008-7-14 18:50:00
种子一样,产生的随机数也是一样的
已有 1 人评分学术水平 热心指数 收起 理由
王琴玥玥玥玥 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

板凳
swnyee 发表于 2008-7-14 19:31:00
哦,原来是这些,谢谢楼上的高人!

报纸
swnyee 发表于 2008-7-14 19:55:00
还有一个问题,要请教:

set memory 60m
set 0bs 10000
set seed 200
gen x1=invnorm(uniform())*6+100
gen x2=invnorm(uniform())*6+100
gen x3=invnorm(uniform())*6+100
gen x4=invnorm(uniform())*6+100
gen mean=(x1+x2+x3+x4)/4
su mean

以上程序也是从张文彤的书得来的,
但是,按照以上诸位的解释,由于
x1、x2、x3、x4的种子数都是200,那么,这4个序列应该是一样的才是,
如此,就没有必要产生x2、x3、x4序列,也没必要求其平均数了呀(
gen mean=(x1+x2+x3+x4)/4)
请高手指教?

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
胡老 + 3 + 3 + 3 观点有启发

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

地板
eblog 发表于 2008-7-14 20:07:00

set seed只对当前的命令有效

再加上一个命令就清楚了:

set seed 200

gen x5=invnorm(uniform())*6+100

这样一来,产生的x5与x1应该是一致的

已有 2 人评分学术水平 热心指数 信用等级 收起 理由
胡老 + 5 + 5 + 5 热心帮助其他会员
Sunknownay + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 6  热心指数 + 6  信用等级 + 6   查看全部评分

7
swnyee 发表于 2008-7-14 21:49:00
真的如楼上所说,谢谢了!

以后还要向兄台多多请教

8
ljt80008 发表于 2008-8-18 22:01:00

随机数产生原理
==============
通常有两种方法
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编辑过]

9
mdeng 发表于 2009-5-6 16:44:00
还是博士的水平高  令我打开眼界

10
univ_farmer 发表于 2009-5-7 15:46:00

线性同余法一般有介绍

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-14 11:20