家庭作业:使用R模拟抛硬币直到连续的头部
我是新手,因此在这里提问(还没有找到非常有用的详细模拟教程。) 问题陈述是这样的家庭作业:使用R模拟抛硬币直到连续的头部,r,matlab,probability,R,Matlab,Probability,我是新手,因此在这里提问(还没有找到非常有用的详细模拟教程。) 问题陈述是这样的 模拟抛硬币20次,记录人头数 &头的最长行程 模拟抛硬币并记录所需的抛硬币次数,直到2,3,4个硬币头按顺序(连续)出现(负二项式?) 使用不同的种子运行100次,以查找记录的项目分布 如何用编程语言R来解决这个问题 对于1,我做了以下工作: n=20 #no of trials y=NULL #initializing a vector of NULL va
n=20 #no of trials
y=NULL #initializing a vector of NULL values
for (i in 1:n) {
x=runif(1) #random uniform
if (x<0.5) { #if condition for assigning heads / tails
y[i]='H'
} else {
y[i]='T'
}
}
y #print the vector storing the heads and tails.
n=20#试验次数
y=NULL#初始化空值向量
for(1:n中的i){
x=runif(1)#随机均匀
如果(x 0.5)
人头数=人头数+1;
其他的
人头计数=0;#如果不是连续的,则使人头计数无效。
结束
结束
显示(翻转计数)
请告诉我这个逻辑是否正确。我可以用R重新创建它。因为这是家庭作业,我想给你一些关于#2和#3的提示 对于#2,做一个循环,持续抛硬币,并计算一行中的掷硬币头数。每次抛硬币时,将掷硬币数增加1,当达到要求的掷硬币头数时,只需返回掷硬币数 为了让你开始,这将做NB投掷
coin <- c('h','t')
ComputeNbTosses <- function(targetTosses) {
nbtosses = 0;
while (nbtosses < targetTosses) {
nbtosses = nbtosses + 1
}
return(nbtosses);
}
这将打印当到达NBS时您在行中有多少个磁头。这不是您想要的。您想要的是:
- 将参数从
更改为targetTosses
targetHeadsInRow
- 更改
中的条件,使其在while
达到nbHeadsInRow
时停止targetHeadsInRow
- 您需要返回的是
(达到您的状态的投掷次数)nbhows
如果有什么不清楚的地方,请告诉我。这是家庭作业吗?如果是,请确认它。此外,请分享您迄今为止的尝试,而不仅仅是要求他人编写代码并为您完成工作……Raaj,正如Justin在堆栈溢出上所说,我们更希望您发布您迄今为止尝试过的内容,并提及它是否是家庭作业。The尝试的过程和解决方案一样有用。@Raaj我会给?rbinom一些可读的提示!
set.seed
,x同意@Raaj,set.seed(1);投掷=rbinom(20,1,0.5)
谢谢。2)我想把我写的代码放在一个while循环中,并计算磁头。然而,当我必须想出一种计算连续磁头而不是简单磁头的方法时,我遇到了一个障碍。也许我应该先在MATLAB中编码,因为我熟悉它,可以在这里请求帮助进行转换这个问题问起来很公平。我再给你一个提示
coin <- c('h','t')
ComputeNbTosses <- function(targetTosses) {
nbtosses = 0;
while (nbtosses < targetTosses) {
nbtosses = nbtosses + 1
}
return(nbtosses);
}
coin <- c('h','t')
ComputeNbTosses <- function(targetTosses) {
nbTosses = 0;
nbHeadsInRow = 0;
allTosses = c();
while (nbTosses < targetTosses) {
toss = sample(coin,1,T)
allTosses = c(allTosses, toss);
if (toss == 'h') {
nbHeadsInRow = nbHeadsInRow + 1;
} else {
nbHeadsInRow = 0;
}
nbTosses = nbTosses + 1
}
ret = list();
ret$nbTosses = nbTosses;
ret$nbHeadsInRowAtEnd = nbHeadsInRow;
ret$allTosses = allTosses;
return(ret);
}
ComputeNbTosses(5);
ComputeNbTosses(8);