楼主: 五品
4986 6

产生随机数的问题 [推广有奖]

  • 0关注
  • 0粉丝

小学生

71%

还不是VIP/贵宾

-

威望
0
论坛币
417 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
90 点
帖子
8
精华
0
在线时间
0 小时
注册时间
2005-12-30
最后登录
2009-4-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

请问用软件产生随机数时通常要先设立种子数set seed #,这个命令主要是什么作用?

如果是定义一个初始数,那么我们该如何选取这个初始种子数?例如,什么时候设成1000,什么时候设成10000,什么时候选123456?

二维码

扫码加我 拉你入群

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

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

关键词:随机数 seed see Set 随机数

回帖推荐

peterf 发表于2楼  查看完整内容

种子是为了产生重复的随机数,比如说。你想在生成了一个10个样本的随机数后,让这前10个样本重复出现,运行一下你设的种子即可。比如:在R或S中, > set.seed=7> set.seed(10)> rnorm(10)[1] 0.2022220 0.5673874 -0.2168126 0.2940439 -1.3832150 0.6890478[7] 0.2698659 -0.8669360 -1.9583219 0.2858080> set.seed(10)> rnorm(5)[1] 0.2022220 0.5673874 -0.2168126 0.2940439 -1.3832150 > rnorm(6)[1 ...

本帖被以下文库推荐

沙发
peterf 在职认证  发表于 2007-4-21 17:25:00 |只看作者 |坛友微信交流群

种子是为了产生重复的随机数,比如说。你想在生成了一个10个样本的随机数后,让这前10个样本重复出现,运行一下你设的种子即可。比如:在R或S中,

> set.seed=7
> set.seed(10)
> rnorm(10)
[1] 0.2022220 0.5673874 -0.2168126 0.2940439 -1.3832150 0.6890478
[7] 0.2698659 -0.8669360 -1.9583219 0.2858080
> set.seed(10)
> rnorm(5)
[1] 0.2022220 0.5673874 -0.2168126 0.2940439 -1.3832150

> rnorm(6)
[1] 1.2426707 -0.9985252 -1.7038199 -0.7823290 -0.7575176 -1.9318804
> set.seed(10)
> rnorm(7)
[1] 0.2022220 0.5673874 -0.2168126 0.2940439 -1.3832150 0.6890478
[7] 0.2698659
>
设种子和不设种子的区别看懂了吗?你想设多少个就看你的需要了。在S+中可设个数的区间为[0,1023]。

[此贴子已经被作者于2007-4-21 17:27:48编辑过]

已有 1 人评分经验 论坛币 收起 理由
胖胖小龟宝 + 10 + 10 热心帮助其他会员

总评分: 经验 + 10  论坛币 + 10   查看全部评分

徘徊在统计学的大门之外

使用道具

藤椅
五品 发表于 2007-4-21 20:37:00 |只看作者 |坛友微信交流群
非常感谢peterf的回答。因为我编程基础比较差,还是不太明白。因为进行模拟的之前需要设立种子数,所以我不太知道为什么种子数选择不同,有没有什么固定的准则?

使用道具

板凳
peterf 在职认证  发表于 2007-4-22 17:18:00 |只看作者 |坛友微信交流群

因为计算机产生的是所谓的伪随机数,也就是说,受计算能力的限制和产生随机数的方法的限制,产生的随机数还是有一定规律性的。不过用rnorm等类型的函数产生随机数的时候,初始随机数是会不断变化的。为了让前面产生的随机数重复出现,就必须设立种子。当然了,种子数的设立个数是受软件限制的,不像你说得那样想设多大就多大。至于设多少个,这就看你的需要了。为了说得具体点,我再举一个例子。

比如说,想产生三个服从正态分布的样本,样本容量分别为5,10,20。第二个样本的前五个随机数和第一个样本一样,第三个样本的前十个随机数和第二个样本一样。这时就可设置两个种子。
> set.seed(1)
> rnorm(5)
[1] -0.7927655 0.7936707 -0.8916424 0.1120670 1.3711549
> set.seed(1)
> rnorm(10)
[1] -0.7927655 0.7936707 -0.8916424 0.1120670 1.3711549 1.4169931
[7] 1.1665775 -0.5306316 0.9211911 -0.5769609
> set.seed(2)
> rnorm(10)
[1] 1.764868371 0.058267051 0.268726377 1.383248613 -0.813888678
[6] -0.362742251 0.002077459 -0.524155998 0.333889698 -1.234131867
> set.seed(2)
> rnorm(20)
[1] 1.764868371 0.058267051 0.268726377 1.383248613 -0.813888678
[6] -0.362742251 0.002077459 -0.524155998 0.333889698 -1.234131867
[11] -0.649857087 -0.659911102 -0.759816557 2.059064793 0.122682129
[16] 0.240284946 0.218507145 0.791565447 0.442990242 0.835892980

徘徊在统计学的大门之外

使用道具

报纸
tanbenyan 发表于 2007-4-22 19:15:00 |只看作者 |坛友微信交流群

楼上的大虾,可以介绍一下出处 吗

使用道具

地板
wumaths 发表于 2007-4-22 21:15:00 |只看作者 |坛友微信交流群

用r或者splus都可以编写出来的。 伪随机数的意思就是因为产生方法使用到了前面已经产生随机数的一个函数所得到新的值,为新的随机数,从实质上而言,并不具备独立的意义,但是由于统计特征和人们所研究需要的一些性质满足,所以还在用。

既然后面的随机数产生受到前面影响,所以产生第一个的时候就要初始化某个参数值,这个就是一定意义下所说的随机数seed。如果缺省的话,系统会采取某个系统参数来替代。

使用道具

7
peterf 在职认证  发表于 2007-4-22 23:02:00 |只看作者 |坛友微信交流群
以下是引用wumaths在2007-4-22 21:15:00的发言:

既然后面的随机数产生受到前面影响,所以产生第一个的时候就要初始化某个参数值,这个就是一定意义下所说的随机数seed。如果缺省的话,系统会采取某个系统参数来替代

楼上说的是机器种子,这和S/R的随机数种子有区别,自己鉴别吧,别把大家说糊涂了。

徘徊在统计学的大门之外

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 17:46