楼主: muting
1584 3

[问答] 求助!这个模拟1000次的程序问题出在哪? [推广有奖]

  • 0关注
  • 0粉丝

初中生

14%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
76 点
帖子
7
精华
0
在线时间
5 小时
注册时间
2010-3-16
最后登录
2013-3-15

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请大家帮我看看下面的这段程序,最后要返回的是满足N>1时的k的平均值,我做了1000次,所以应返回这1000个k的均值,每次符合条件的k都赋予n[i],但为什么结果最后竟然是500多??请问问题出在哪里?

kehou3=function(B)
{
  k=0
  N=0
  n=array()
  for(i in 1:B)
    {  

      repeat
        {
          k=k+1
          u=runif(1)
          N=N+u
          if(N>1)
             {
               n[i]=k
               break
             }
        }
      
    }
  mean(n)
}
kehou3(1000)
二维码

扫码加我 拉你入群

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

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

关键词:function repeat array break mean function repeat 平均值 程序

每次for循环时你确定不用在repeat语句之前加上K=0,N=0么?

而且,就算照你的程序运行,n也确实含有1000个元素呀?

不可能出现只含有500多个元素的情况!

你这500多究竟是什么意思?——照上下文理解就是“只含500多个元素”的意思。

但是我估计你是想说“mean(n)的值,即n的均值是500多”,对么?

你认为这样很不合理,当然,问题就出在for循环里,你应该在repeat前加上k = 0及N = 0的语句!

使用道具

藤椅
tingmu 发表于 2012-8-5 21:27:56 |只看作者 |坛友微信交流群
meishanjia1900 发表于 2012-8-5 12:11
每次for循环时你确定不用在repeat语句之前加上K=0,N=0么?

而且,就算照你的程序运行,n也确实含有1000个 ...
是的,我想要得到的就是mean(n),可是我不懂的事,为什么要在for循环里加上N=0,K=0,我之前是在for循环之前加的,结果就差这么多,这个有什么不同么

使用道具

板凳
trier2006 发表于 2012-8-6 08:30:56 |只看作者 |坛友微信交流群
帮顶
最好的医生是自己,最好的药物是时间……

使用道具

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

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

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

GMT+8, 2024-5-3 03:10