从头开始学习R的硬件分配

时间:2016-04-15 17:41:44

标签: r

因此,我正在学习一门需要学习R的课程,而我正在努力解决其中一个问题:

在这个问题中,您将练习从另一个函数中调用一个函数。我们将通过模拟骰子投掷估计滚动两个六的概率。 (小数点后四位的正确概率为0.0278,或36为1)。

  • (1)创建一个函数roll.dice(),它接受​​一个数字ndice并返回掷骰子数量的结果。这些是六面骰子,可以返回1到6之间的数字。例如,roll.dice(ndice=2)可能会返回4 6。使用sample()功能,注意替换选项。

  • (2)现在创建一个带参数nsamples的函数prob.sixes(),首先将j设置为0,然后多次调用roll.dice()(nsample次)。每次roll.dice()返回两个六,请将一个添加到j。然后返回投掷两个六的概率,即j除以nsamples。

我对第一部分很好,或者至少我是这么认为的,所以这就是我所拥有的

roll.dice<-function(ndice)  
{
  roll<-sample(1:6,ndice,TRUE)
  return(roll)
}
roll.dice(ndice=2)

但我正在努力解决第二部分问题。这就是我到目前为止所做的:

prob.sixes<-function(nsamples)  {
  j<-vector
  j<-0
  roll.dice(nsamples)
  if (roll.dice==6) {
    j<-j+1
    return(j)
  }
}
prob.sixes(nsamples=3)

对不起所有文字,但有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

您的代码有几个我可以看到的问题。第一个是对问题的解释。问题是:

  

现在创建一个带参数nsamples的函数prob.sixes(),它首先将j设置为0,然后多次调用roll.dice()(nsample次数)。

检查你的代码,你在做这个吗?或者你一次调用roll.dice()?寻找方法来做同样的事情(在你的情况下,roll.dice)几次;你可以考虑函数for。此外,在这里,您需要将此函数的结果存储在变量上,例如

rolled = roll.dice(2)

第二个问题:

  

每次roll.dice()返回两个sixes时,将一个添加到j。

您正在检查是否roll.dice==6。但这有两个问题。首先,roll.dice功能,而不是变量。所以它永远不会等于6.此外,你不想检查这个变量是否等于6。你应该问这个变量是否等于一对六。你怎么写&#34;一对六&#34;?