作业:使用 R 模拟抛硬币直到连续正面朝上

2023-12-08

我是 R 新手,因此在这里询问(尚未找到非常有用的详细模拟教程。)

问题陈述是这样的

  1. 模拟抛硬币20次并记录正面的数量 和最长的头。
  2. 模拟抛硬币并记录所需的抛掷次数,直到依次(连续)出现 2、3、4 次正面(负二项式?)
  3. 使用不同的种子进行 100 次运行,以找出记录的项目的分布。

如何用 R 编程语言解决这个问题?

对于 1,我执行了以下操作:

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.

对于 2,我理解这是负二项式的情况,因为它说“直到 2,3,4 头依次出现”。但我不确定如何继续在 R 中编写代码或提出逻辑。

对于 3,我猜测必须计算 100 次运行中获得的正面数量,即正面的运行长度。但这意味着什么不同的种子?我对此不确定。

note是的,这是一个家庭作业问题(我无法如此标记它)。我不需要代码,只需一些指针/更正/澄清/建议就会有帮助。

edit为了模拟 2,我在 MATLAB 上尝试了以下代码 -

head_count = 0;
flip_count = 0;

while (head_count < 3)                  #counting for 3 multiple heads
    flip = rand(1);
    flip_count = flip_count+1;
    if (flip > 0.5)
        head_count = head_count + 1;
    else 
         head_count = 0;       #invalidate head counts if not successive.
    end
end
disp(flip_count)

请告诉我这个逻辑是否正确。我可以使用 R 重新创建它。


由于这是家庭作业,我想为您提供一些关于#2 和#3 的指导。

对于#2,创建一个循环,不断抛硬币并计算连续出现正面的数量。每次抛掷时,抛掷次数加 1,当达到要求的正面数时,只需返回抛掷次数。

为了帮助您开始,这将执行 nbTosses tossesL

coin <- c('h','t')

ComputeNbTosses <- function(targetTosses) {
  nbtosses = 0;
  while (nbtosses < targetTosses) {
    nbtosses = nbtosses + 1
  }
  return(nbtosses);
} 

您只需修改它以接受参数 targetHeads 并仅在到达 tagetHeads 时退出 while 循环。

对于 #3,将 #2 放入函数中,然后使用set.seed(integer),设置种子。计算机上的随机数并不是真正随机的。大多数随机生成器允许您设置种子。如果使用相同的种子,您将获得两次相同的伪随机数序列,这允许调试。

编辑:我将#2从递归更改为普通循环,为他编写代码会更容易。

编辑(提示): 这将计算您连续有多少个正面,现在您必须在达到正面目标值时停止循环:

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);

这将打印当它到达 nbTosses 时,您在行中有多少个头。这不是你想要的。你想要的是:

  • 将参数从targetTosses to targetHeadsInRow
  • 改变条件中的while以便它停止时nbHeadsInRow达到targetHeadsInRow.
  • 你需要返回的是nbTosses(达到你的条件的抛掷次数)

如果有任何不清楚的地方请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

作业:使用 R 模拟抛硬币直到连续正面朝上 的相关文章

  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • R 中的快速 QR 分解

    我有大量矩阵 需要对其执行 QR 分解并存储生成的 Q 矩阵 进行归一化 以便 R 矩阵在其对角线上具有正数 除了使用之外还有其他方法吗qr 功能 这是工作示例 system time Parameters for the matrix t
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这
  • 如何获得所有大于x且有位置的数字?

    V lt c 1 3 2 4 2 3 1 X lt 3 pos lt V V X pos is 3 3 我需要的是所有 3 个的位置 I need 2 and 6 哪些职位是3 in V Use which pos lt which V 3
  • MATLAB 中的霍夫变换

    有谁知道如何使用霍夫变换来检测二值图像中最强的线 A zeros 7 7 A 6 10 18 24 36 38 41 1 使用 rho theta 格式 其中 theta 以 45 为步长 从 45 到 90 以及如何在 MATLAB 中显
  • 使用 ggmap 截断密度多边形

    我在使用 R ggmap 绘制密度图时遇到问题 我的数据如下所示 gt head W date lat lon dist 1 2010 01 01 31 942 86 659 292 415 2 2010 01 10 32 970 84 1
  • 从开始/结束索引列表创建向量化数组

    我有一个两列矩阵M包含一堆间隔的开始 结束索引 startInd EndInd 1 3 6 10 12 12 15 16 如何生成所有区间索引的向量 v 1 2 3 6 7 8 9 10 12 15 16 我正在使用循环执行上述操作 但我想
  • 纵向比较 R 中的值...并进行扭转

    我有许多人在多达四个时间段进行的测试结果 这是一个示例 dat lt structure list Participant ID c A A A A B B B B C C C C phase structure c 1L 2L 3L 4L
  • R 中用于调用 sed、rsync、ssh 等的 system() 的替代方案:函数是否存在,我应该编写自己的函数,还是我错过了重点?

    最近 我发现了base files命令 与其他命令一起使用 例如getwd write lines file show dir等等 似乎有许多 bash 函数的 R 等价物 我还在 R 中编写了一些函数来简化对ssh and rsync通过
  • 投资决策:R中的NPV、IRR、PB计算

    我正在尝试计算不同数量项目的净现值 NPV 内部收益率 IRR 和投资回收期 PB 时间 以评估哪个投资项目提供最佳回报 到目前为止 我可以为每个项目单独计算几行代码 但我想做的是 编写一个函数 它接受一个包含许多不同项目及其现金流的矩阵
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 删除极坐标图边缘的多余空间和圆环

    我有一个极坐标图ggplot2我已经非常接近完成 相当简单的情节 我已经能够在删除矩形边框方面获得帮助 但我不需要删除最后一个范围轮廓与带有方位角标签的绘图周围的环之间的额外空间 我希望该图的边界为 15 000 而不是 15 214 我编
  • 条件字体颜色 R Markdown

    我无法找到一种方法来根据变量的值 gt 0 0 或 r setup include FALSE x lt 4 This is an R Markdown document r if x gt 0 textcolor red Markdown
  • 给定协方差矩阵,在Matlab中生成高斯随机变量

    Given a M x M期望的协方差 R 以及所需数量的样本向量 N计算一个N x M高斯随机向量 X在普通 MATLAB 中 即不能使用r mvnrnd MU SIGMA cases 不太确定如何解决这个问题 通常你需要一个协方差并且意
  • 闭包作为数据合并习惯的解决方案

    我正在尝试解决闭包问题 而且我think我发现了一个案例 他们可能会有所帮助 我有以下几部分需要处理 一组正则表达式 旨在清理状态名称 位于函数中 具有州名称 上述函数创建的标准化形式 和州 ID 代码的 data frame 用于链接两者
  • 如何使用 tidymodels 和工作流集在同一数据集上拟合多个不同的线性模型

    我想评估同一数据集上多个 主要是 线性回归模型的性能 我想也许使用tidymodels包连同workflowsets workflow set 可能会起作用 我按照这个例子here https workflowsets tidymodels
  • 无法更改 RStudio 中的 R 版本

    我的 RStudio V 0 99 491 无法更改 R 版本 我以平常的方式行事Global Options gt R Version 然后它挂起并且不再工作或反应 R 运行良好的初始版本是R 3 1 0 我以前从未遇到过这样的问题 也许
  • 在 ifelse() 语句内部和外部运行一行时的不同输出

    我正在尝试运行一个简单的命令 但不知道为什么在内部和外部运行它时输出不同ifelse 功能 函数条件评估为FALSE 所以输出应该完全相同 但是 单独运行时 输出为0 0 1 1 0 1 0 1 NA 根据需要 但是从ifelse 函数 输
  • 麦当劳 omega:R 中的警告

    我正在计算几种不同尺度的欧米茄 并在 R 中使用不同的 omega 函数获取不同比例的不同警告消息 我的问题是如何解释这些警告以及报告检索到的 omega 统计数据是否安全 当我使用 从 alpha 到 omega 内部一致性估计普遍问题的

随机推荐