楼主: muting
1793 3

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

  • 0关注
  • 0粉丝

初中生

14%

还不是VIP/贵宾

-

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

楼主
muting 发表于 2012-8-4 16:51:19 |AI写论文

+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 平均值 程序

沙发
meishanjia1900 发表于 2012-8-5 12:11:01
每次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
拉您进交流群
GMT+8, 2026-1-1 05:24