R语言。求解释code

Python014

R语言。求解释code,第1张

function 是定义一个函数,这个函数的名字是poissonproc,感脚上是个泊松过程吧;

rpois是按照泊松分布生成随机数rpois(n, lambda),生成n个;

runif是按照均匀分布生成随机数runif(n, min=0, max=10), 生成n个,这个n是之前的结果,最大值是10,最小值默认为0;

返回的 均匀分布的随机数中,[4, 5]之间的个数;

最后一句:上述过程重复10000次;

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;

q1, dexp是指数分布的概率密度;

r*是生成*分布的随机数,p是*分布的概率分布,d是概率密度,还有q是d的反函数,貌似

R可向量操作,数乘向量是用数乘向量内的每个元素

q2, pi在R里是一个常量,可直接用,3.141593,没有你要求的精度高,你可pi<-3.1415926535...

q3, 不会

q4, integrate 函数能算数值积分;蒙特卡洛积分我不会,甚至都没听过,不是数学专业的,正常正常...

以 ∫ e^(-x) dx 上限: 无限, 下限:0为例啊;

f<-function(x) {exp(-x)}

integrate(f, lower=0, upper=Inf)

若是 ∫ e^(-x^3) dx的话,

f<-function(x) {exp(-x^3)}

就行了