R语言。。。。求解code和怎样写

Q1:>repeat{>U<-runif(2,min=c(-0.5,0),max=c(length(p)-0.5,max(p)))#不明白为什么有2个max,作用分别是?... Q1:>repeat {
> U<- runif(2,min=c(-0.5,0) , max =c(length(p) -0.5, max(p))) #不明白为什么有2个max,作用分别是?
> if ( U[2[ < p [round (U[1]) +1]) break #这个呢? }
Q2:
写个方程 ,模拟2人a,b打羽毛球。假设第1人拿了21分就算赢。 找出a赢的几率。我觉得用runif模拟21次?<0.5就当没分,大于有1分。这样行吗?然后怎样找a赢的几率?
求指导,非常感谢先
展开
 我来答
匿名用户
2013-08-26
展开全部

q1, R2.15.3中runif的原型是runif(n, min = 0, max = 1),对应生成多少个随机数,均匀分布中的a和b;

      关于两个max,第一个max=....是指函数runif中对应的max参数,其值是c(length(p) -0.5, max(p));第二个max是一个运算,其优先级高于runif,在runif之前就完成运算。故不矛盾。

      总结一下,这两个max一个是参数名称,一个是函数运算。同理,多个max运算也不矛盾,max分别运算,结果分别保存,然后传递给runif函数。

      break的总用是跳出最近的循环,也就是如果满足if的条件就跳出repeat;

 

q2,我的思路是,不保证对,仅做参考。

        如果打41局,一定能分出胜负,如果仅考虑先得21分者胜的话;

        二项分布x<-rbinom(41, size = 1, prob = 0.5)  模拟了两个人的比赛情况,0表示a输,1表示a赢。

       函数func计算谁先得到21分;由于x中只有0,1,故可在21:41的长度区间内,依次用sum和长度判断1先到凑够21个还是0先凑够21个

func <- function(x){
   for (i in 21:length(x)){
      if (sum(x[1:i]) >= 21) return ('a')
      if (i - sum(x[1:i]) >= 21) return('b')
   }
}
func(x)

funx(x) 计算出谁赢;

在这个基础上,通过重复多次上述过程,代码中500次,可以算出a赢的比例,即概率;

v <- vector(length=500)
for (i in 1:500){
   x<-rbinom(41, size = 1, prob=0.5)
   v[i] <- func(x)
}
length(v[v=='a'])/500

随着重复次数的增加,这个概率最终趋近于0.5,也就是rbinom中的概率;

 

p.s. lz的题都不错,能否推荐下?

       我自从学完R之后,一直也没怎么系统做题,做了几天题也挺有收获,在此也感谢下lz;

追问
你在百度hi或者私信那留个联系方式给我?
追答
还是百度hi吧,philzt1984
我就是比较感兴趣您做的是哪儿的题,谁的书?还是某专业....
就是想学学统计,没别的意思;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式