请教一道R语言的统计题。。急T^T在线等 20

假设有n个人去餐馆,每个人都戴了一顶帽子并将帽子寄存在餐馆门口。管理寄存帽子的人不小心将n个人的帽子打乱了,不知道哪顶帽子是属于谁的。当那n个人离开时,他便把任意一顶帽子... 假设有n个人去餐馆,每个人都戴了一顶帽子并将帽子寄存在餐馆门口。管理寄存帽子的人不小心将n个人的帽子打乱了,不知道哪顶帽子是属于谁的。当那n个人离开时,他便把任意一顶帽子归还给离开的人。n个人走的顺序是随机的。模拟一个R语言来回答以下问题:

1. 假设n=5。计算出没有一个人拿到自己帽子的概率。然后计算出至少有1个人拿到了自己帽子的概率。

2. 假设n=5。计算出拿到自己帽子的人数的平均数。

3. 重复第1问和第2问,当n=20的时候。

4. 假设n=50。计算出至少有1个人拿到了自己帽子的概率。计算出拿到自己帽子的人数的平均数。

5. 用更大的n来计算没有一个人拿到自己帽子的概率和拿到自己帽子的人数的平均数。

(提示:你需要模拟至少1000次,不断统计每一次有多少人拿到自己的帽子。)
展开
 我来答
358463121
2013-10-26 · TA获得超过505个赞
知道小有建树答主
回答量:423
采纳率:0%
帮助的人:381万
展开全部
fun<-function(n){
times=1000; #模拟次数
none=0;
over=0;
sum=0;
for(i in 1:times){
A=1:n #代表1到n号人
B=1:n #代表1到n号帽
num=0; #有num个人得到自己的帽子
max=n;
for(j in 1:n-1){
rand=round(runif(2,min=1,max=max)) #产生2个随机数,取整
people=rand[1]
hat=rand[2]
if(A[people]==B[hat]){
num=num+1
}
A<-A[-people] #删除走的人
B<-B[-hat] #删除掉已拿走的帽子
max=max-1 #随机数最大值减一
}
if(num==0)none=none+1;
if(num>0)over=over+1;
sum=sum+num/n;
}
c(
over/times, #至少有1个人拿到了自己帽子的概率
none/times, #没有一个人拿到自己帽子的概率
sum/times #得到自己帽子的概率
)
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式