繁体   English   中英

模拟单个n侧模具,其中具有最高编号的一侧显示的频率是所有其他侧面的两倍

[英]Simulate a single n-sided die where the side with the highest number shows up twice as often as all other sides

我需要做这个任务。 我只是不知道它是如何工作的。 问题是。

从演讲中修改函数roll(),模拟单个n面模具,其中具有最高编号的一侧显示的频率是所有其他边的两倍。 您可能会发现有用的函数是?,c(),min(),max(),length(),sort()和rep()。

功能就是这样。

roll <- function( num = 1:6, rolls = 1) {
  dice <- sample(num, size = rolls, replace = TRUE)
  return(dice)
}

我很确定我必须使用示例函数中的'prob'参数,但我不知道如何。

你可以在没有prob论证的情况下通过考虑什么样的公平加权(所有面孔同样可能)死亡来给出你想要的结果。

sample(1:6, 1)从无偏的六面模具中提供单个样品。 在这种情况下你似乎想要的东西相当于一个有六个六面的七面模具。 哪个会......

sample(c(1:6,6),1)

这是1到5的相等变化,是6的几率的两倍。

> table(sample(c(1:6,6),7000,replace=TRUE))

   1    2    3    4    5    6 
 972 1018 1016  980 1018 1996 

我不清楚“最高数字是否显示出所有其他方面的两倍”意味着“所有其他方面都放在一起”。 在这种情况下,您想从10面模具中采样1到5加5个六:

sample(c(1:5, rep(6,5)),1)

这是获得1比5或6的平等机会。

> table(sample(c(1:5, rep(6,5)),10000,replace=TRUE))

   1    2    3    4    5    6 
1012  961  943 1018 1026 5040

推广到N并编写您的函数。

你是对的, prob -Parameter在这里很有用(尽管你没有这个)。

以下是您必须完成的步骤:

  • 找出num哪个条目最大(不要认为它是最后一个)
  • 您需要该条目的索引(=“位置”)。
  • 计算除最大条目之外的每个条目的概率。 示例:如果n = 6,那么每个概率为1/7,除了具有2/7的最后一个。
  • 在正确的位置创建包含这些概率的向量。 你已经知道了最大的位置,所以你会把加倍的概率放在那个位置。
  • 将概率提供给sample ()
  • 测试! 多次运行以查明最大值是否真的大约。 经常翻倍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM