楼主: 跳蚤侠
26243 8

[问答] 用set.seed设置了种子,但是每次产生的随机数还是不同 [推广有奖]

  • 2关注
  • 0粉丝

硕士生

30%

还不是VIP/贵宾

-

威望
0
论坛币
448 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
967 点
帖子
62
精华
0
在线时间
159 小时
注册时间
2010-4-23
最后登录
2023-6-17

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
> set.seed(123)
> rnorm(10)
[1] -0.56047565 -0.23017749  1.55870831  0.07050839  0.12928774  1.71506499
[7]  0.46091621 -1.26506123 -0.68685285 -0.44566197
> rnorm(10)
[1]  1.2240818  0.3598138  0.4007715  0.1106827 -0.5558411  1.7869131  0.4978505
[8] -1.9666172  0.7013559 -0.4727914

请问怎么解决这个问题

二维码

扫码加我 拉你入群

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

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

关键词:seed 随机数 Set see Norm

回帖推荐

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

set.seed()只对运行该命令后的第一次随机产生结果有效。
沙发
jiangbeilu 学生认证  发表于 2016-1-13 20:14:01 |只看作者 |坛友微信交流群
set.seed()只对运行该命令后的第一次随机产生结果有效。
  1. > set.seed(13)
  2. > rnorm(10)
  3. [1]  0.5543269 -0.2802719  1.7751634  0.1873201  1.1425261  0.4155261
  4. [7]  1.2295066  0.2366797 -0.3653828  1.1051443
  5. > set.seed(13)
  6. > rnorm(10)
  7. [1]  0.5543269 -0.2802719  1.7751634  0.1873201  1.1425261  0.4155261
  8. [7]  1.2295066  0.2366797 -0.3653828  1.1051443
  9. >
复制代码
已有 2 人评分论坛币 学术水平 热心指数 收起 理由
rudi + 1 + 1 + 1 有帮助,谢谢!
tyson279 + 1 + 1 分析的有道理

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

使用道具

藤椅
lancylu 发表于 2016-1-13 22:39:21 来自手机 |只看作者 |坛友微信交流群
跳蚤侠 发表于 2016-1-13 19:27
> set.seed(123)
> rnorm(10)
[1] -0.56047565 -0.23017749  1.55870831  0.07050839  0.12928774  1.71 ...
要得到相同的随机数,还得再“重写”一遍
set seed(123)
rnorm()
这样,每次得到的随机数就一样啦

使用道具

板凳
跳蚤侠 发表于 2016-1-13 22:49:52 |只看作者 |坛友微信交流群
lancylu 发表于 2016-1-13 22:39
要得到相同的随机数,还得再“重写”一遍
set seed(123)
rnorm()
啊,多谢,搞定了

使用道具

报纸
水舞者 发表于 2016-10-13 15:02:46 |只看作者 |坛友微信交流群
原来如此,多逛论坛果然有好处!这也是我一直犯的错误

使用道具

地板
xysscn 发表于 2016-11-15 10:41:06 |只看作者 |坛友微信交流群
跳蚤侠 发表于 2016-1-13 22:49
啊,多谢,搞定了
我觉得沙发的回答虽然从楼主这个应用上来说没有问题,但可能在理解上产生一定的误会
设置了种子代表的是 此后产生的随机数序列固定
楼主的情况之所以不同,是因为处在同一序列的不同位置
比如设定了随机数种子之后,随机数序列可能是 6,1,2,5
如果每次都set.seed,相当于每次都只取第一位的那个6
楼主之前的做法,相当于按顺序往下取,6取完就取1,完了再取2这样

通常的使用中你可能会取大量的随机数,而一次set.seed就可以保证整段代码的可重复性
只有像楼主需求在代码内还要能重复每一次的结果,才需要每次都重置set.seed。但通常没有这样的必要,因为你第一次生成的时候,这个结果就已经确定了,完全可以通过赋值的办法搞出备份
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
东北小月 + 1 + 1 + 1 精彩帖子
raiman + 2 + 5 + 5 + 5 精彩帖子

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

使用道具

7
zhengyn 发表于 2016-11-15 12:17:18 |只看作者 |坛友微信交流群
xysscn 发表于 2016-11-15 10:41
我觉得沙发的回答虽然从楼主这个应用上来说没有问题,但可能在理解上产生一定的误会
设置了种子代表的是 ...
表示没看懂,新手,对随机数seed括号里的数字取值有什么作用吗?另外,不是很懂您的意思,能不能举个例子

使用道具

8
raiman 发表于 2018-1-19 15:46:37 |只看作者 |坛友微信交流群
xysscn 发表于 2016-11-15 10:41
我觉得沙发的回答虽然从楼主这个应用上来说没有问题,但可能在理解上产生一定的误会
设置了种子代表的是 ...
正解!不理解的可以试着比较如下两种取随机数的结果有何不同:
1. set.seed(100)
    runif(5)
    runif(5)
    runif(5)
2. set.seed(100)
     runif(5)
     set.seed(100)
     runif(5)
     set.seed(100)
     runif(5)

使用道具

9
东北小月 发表于 2018-11-3 11:38:07 |只看作者 |坛友微信交流群
xysscn 发表于 2016-11-15 10:41
我觉得沙发的回答虽然从楼主这个应用上来说没有问题,但可能在理解上产生一定的误会
设置了种子代表的是 ...
再举一个帮助理解的例子。楼主两次rnorm(10)产生的不一样,是因为第二次rnorm(10)是接着上一次的继续产生,所以如果我需要产生两个不同的变量,都是rnorm(10),我只用set.seed一次,下次运行就能重复结果。
> set.seed(13)
> rnorm(10)
[1]  0.5543269 -0.2802719  1.7751634  0.1873201  1.1425261  0.4155261  1.2295066  0.2366797
[9] -0.3653828  1.1051443
>
> rnorm(10)
[1] -1.0935940  0.4618709 -1.3609845 -1.8560272 -0.4398554 -0.1939469  1.3964315  0.1006632
[9] -0.1144388  0.7022252
> set.seed(13)
> rnorm(20)
[1]  0.5543269 -0.2802719  1.7751634  0.1873201  1.1425261  0.4155261  1.2295066  0.2366797
[9] -0.3653828  1.1051443 -1.0935940  0.4618709 -1.3609845 -1.8560272 -0.4398554 -0.1939469
[17]  1.3964315  0.1006632 -0.1144388  0.7022252

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

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

GMT+8, 2024-4-20 09:07