生成掷 n 个骰子的所有可能结果的矩阵(忽略顺序)

2024-01-05

在顺序确实很重要的情况下,生成所有可能结果的矩阵相当容易。执行此操作的一种方法是使用expand.grid如图所示here https://stackoverflow.com/questions/2889613/how-can-i-find-out-how-many-rows-of-a-matrix-satisfy-a-rather-complicated-criteri.

如果没有怎么办?

如果我是对的,可能的组合数是(S+N-1)!/S!(N-1)!,其中 S 是骰子的数量,每个骰子有 N 个面,编号为 1 到 N。(这与众所周知的组合公式不同,因为相同的数字可能出现在多个骰子上)。例如,掷四个六面骰子时,N=6,S=4,因此可能的组合数为(4+6-1)!/4!(6-1)! = 9!/4!x5! = 126. 如何生成这 126 种可能结果的矩阵?

谢谢。


这是 gd047 和 Marek 好心提供的代码。

S <- 6 
N <- 4 
n <- choose(S+N-1,N) 
outcomes <- t(combn(S+N-1,N,sort)) - matrix(rep(c(0:(N-1)),each=n),nrow=n)

注意:这是最佳的,因为它不会尝试生成所有内容然后丢弃重复内容。It actually generates only those that are required.

其工作原理的解释:

骰子上可能的数字是 1 到 N。

Suppose you are given a possible combination of the dice numbers: x1 , x2 , ..., xS where S is the number of dice.

由于顺序并不重要,我们可以假设

x1 ≤ x2 ≤ ..., ≤ xS.

Now consider the sequence x1, x2 + 1, x3 + 2, ..., xS + S-1.

(例如:1,1,1 变为 1,1+1,1+2 = 1,2,3)。

这个新序列具有从 1 到 N+S-1 的数字,并且所有数字都是不同的。

从您的骰子序列到我们创建的新骰子序列的映射是 1-1 的,并且可以轻松逆转。

因此,要生成 S 个骰子与数字 1 到 N 的可能组合,您所需要做的就是生成所有 N+S-1,从 1、2、...、N+S-1 中选择 S 个数字的 S 个组合。给定这样的组合,你对其进行排序,从最小的减去 0,从第二小的减去 1,依此类推,得到编号为 1 到 N 的 S 个骰子的骰子编号组合。

例如,假设 N = 6 且 S = 3。

您生成从 1 到 6+3-1 = 8 的 3 个数字的组合,即 1,2,...,8 中的 3 个数字。

假设你得到 3、6、7。这转化为 3, 6-1, 7-2 = 3,5,5。

如果你得到1、2、8。这将转换为 1,1,6。

顺便说一句,这个映射也证明了你的公式。

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

生成掷 n 个骰子的所有可能结果的矩阵(忽略顺序) 的相关文章

  • 在 for 循环中绘制的多个 ggplot2 绘图的网格

    作为一个新的 ggplot2 用户 我对可能性的数量感到有点迷失 并且很难在网上找到我认为简单问题的简单答案 我想在同一张纸上显示 ggplot2 的多个图 但知道这些图来自 for 循环 以下示例无法编译 仅用于说明 for i in c
  • 如何从 data.frame 中选择行和列的子集

    我有这个 d d Age gt 2 它返回 Age 超过 2 的所有行 但我只想返回几列中的值 例如 d X 和 d Y 而不是全部 无论如何我可以做到这一点吗 Thanks d d Age gt 2 c X Y
  • 包检查时如何有效处理未压缩的保存?

    在最近开发一个包的过程中 我将数据集包含在data 我的包的文件夹 在我的具体情况下 我有 5 个数据集 所有这些数据集都位于data table格式 尽管我在下面描述的问题仍然存在 如果我将它们保留为data frame 我已将每个人单独
  • 正则表达式挑选括号之间的一些文本[重复]

    这个问题在这里已经有答案了 可能的重复 提取 R 中所有括号内的信息 正则表达式 https stackoverflow com questions 8613237 extract info inside all parenthesis i
  • readRDS() 加载额外的包

    什么情况下会出现readRDS R 中的函数尝试加载包 命名空间 我很惊讶地在新的 R 会话中看到以下内容 gt loadedNamespaces 1 base datasets graphics grDevices methods sta
  • 让电脑实现360度=0度,旋转炮塔

    我正在制作一个游戏 其中有一个计算机控制的炮塔 炮塔可360度旋转 它使用 trig 找出枪瞄准所需的角度 obj deg 并将枪的当前角度存储在 gun deg 下面的代码以设定的速度旋转枪 if objdeg gt gundeg gun
  • 使用 ggplotly(ggplot2 withplotly)时可以去掉注释中的跟踪标签吗?

    使用ggplotly时是否可以删除注释中的跟踪标签 例如 library ggplot2 library plotly g lt ggplot iris aes Sepal Width Sepal Length geom point ann
  • 解释 survreg 中的威布尔参数

    我正在尝试使用从 R 中的 survreg 估计的参数生成逆威布尔分布 我的意思是 对于给定的概率 这将是在 MS Excel 中实现的小型模拟模型中的随机数 返回使用我的参数预计出现故障 的时间 我理解逆威布尔分布的一般形式是 X b l
  • 如何在 R 地图库中绘制正确的颜色

    我正在尝试使用 R 地图库为特定国家绘制特定颜色 我可以填写颜色 但它们与各自的国家 地区没有正确关联 我想知道是否有人能知道为什么 我的数据框是 filld 有 3 列 第一列是国家名称 第二列只是一些数字数据 第三列是颜色 countr
  • R:使用管道将单个参数传递到函数中的多个位置

    我试图专门使用管道来重写以下代码 使用babynames包中的babynames数据 library babynames library dplyr myDF lt babynames gt group by year gt summari
  • 在 R 中修改传单弹出窗口

    我想修改 R 中传单弹出窗口的外观 帮助文件指出 in the popupOptions 函数需要 传递给底层 Javascript 对象构造函数的额外选项 In 这个例子 https rstudio github io leaflet p
  • 为什么我在 ddply 中看到“错误:length(rows) == 1 is not TRUE”?

    我有一个数据框 比如工资单 例如 payroll lt read table text AgencyName Rate PayBasis Status NumRate HousingAuthority 26 843 00 Annual Fu
  • 带有嵌套分组变量的多行轴标签,用于 - R 中的堆积条形图

    我想使用 ggplot 制作一个包含多个类别的堆叠条形图 并带有嵌套的标记 X 轴 类似于我使用 Excel 制作的条形图 如此处所示 我尝试使用给出的例子here https stackoverflow com questions 181
  • 如何从列中创建对称矩阵?

    例如 我想转动以下列 90 175 600 650 655 660 代入矩阵 90 175 600 650 655 660 175 600 650 655 660 655 600 650 655 660 655 650 650 655 66
  • 插入排序 - 如何接受输入并打印排序后的数组

    我试图做一个插入排序程序 它接受任何数据类型 Int Double String 然后打印排序后的数组 我知道我的代码可以工作 但我无法找出真正的问题 import java util public class MyInsertionSor
  • Haar级联正例图像大小调整

    我正在迈出第一步 为自定义对象识别创建 haar 级联 我花了时间获取大量数据并编写了一些预处理脚本以将视频转换为帧 我的下一步是裁剪感兴趣的对象 以创建一些积极的训练示例 我有几个问题 我确实在网上寻找答案 我有点困惑 我读到我应该致力于
  • 使用 R 中的 tidyverse 重新调整因子和重新排序因子

    我想使用这些功能重新调平 and 重新排序 在我的数据框中 我了解重新调整级别的工作原理 但我不明白为什么我在 data frame 中看不到级别的变化 例如 假设我有鸢尾花数据集 library tidyverse head iris g
  • for 循环与 cor.test 在许多类别上

    我正在尝试在 R 中编写一个循环 它将循环遍历 3 个不同的物种 以计算两个连续变量 Redness 和 VarNormAbund 之间的相关性 我的循环正在运行 但 3 个物种中每一个的输出都是相同的 这让我认为循环卡在第一个物种上 co
  • 通过 RCpp 返回 NA

    新手 RCpp 问题在这里 How can I make a NumericVector returnNA到R 例如 假设我有一个 RCpp 代码 它分配NA到向量的第一个元素 RCpp export NumericVector myFun
  • 一次评论多个对象

    假设您有一个变量 a 到 j 的列表 for x in 1 10 assign letters x x 您将如何评论那些最近创建的对象 我尝试过类似的事情 for x in 1 10 comment get letters x lt pas

随机推荐

  • plot.new尚未被调用

    为什么会发生这种情况 plot x y yx lm lt lm y x lines x predict yx lm col red 错误于plot xy xy coords x y type type plot new尚未被调用 某些操作
  • C# 解码(解压缩)PDF 文件的 Deflate 数据

    我想在 C 中解压缩一些 DeflateCoded 数据 提取的 PDF 不幸的是 我每次都会遇到异常 解码时发现无效数据 但数据是有效的 private void Decompress FileStream fs new FileStre
  • Number::toString() 抽象操作

    我试图理解如何数字 toString x https 262 ecma international org 11 0 sec numeric types number tostring抽象操作有效 据我所知 其要点似乎是非常大 n gt 2
  • exec 总是返回 -1 (或 127)

    我在生产服务器上使用 php 5 2 9 并且 exec 函数的行为似乎是 非标准 如果我跑exec ls output return var then output将按预期包含当前文件夹中的文件列表 但是 return var将被设置为
  • Google Spanner:JDBC 连接字符串?

    虽然 Spanner 看起来令人兴奋 但 Simba JDBC 驱动程序的文档 包含在此处的下载链接中 https cloud google com spanner docs partners drivers https cloud goo
  • 如何确保 slurm 中的 python 提交脚本位于发出 sbatch 命令的位置?

    我有一个运行的 python 提交脚本sbatch using slurm sbatch batch py 当我这样做时 事情无法正常工作 因为我认为 batch py进程没有继承正确的环境变量 因此 而不是运行batch py从哪里sba
  • 使用 Ruby 的 TracePoint 获取方法参数

    我可以使用 TracePoint API 访问 Ruby 方法的参数 def foo foo arg end trace TracePoint trace call c call do tp tp disable case tp metho
  • 在赋值 A(:) = B 中,A 和 B 中的元素数量必须相同

    例如 当尝试运行我的代码时 for ii 1 10 output ii rand 3 end 我收到错误 In an assignment A B the number of elements in A and B must be the
  • 目标 C:SHA1

    如何在 Objective c 中 sha1 一个字符串或一组数字 CommonCrypto Apple 框架 具有计算 SHA 1 哈希值的函数 包括一步哈希值 include
  • 给定 x、y 和色调,获取 HSL 值

    给定一个看起来像这样的颜色选择器 我正在尝试根据光标的 x 和 y 位置以及右侧滑块的色调来计算 HSL 值 我的数学技能相当薄弱 尽管我所拥有的很接近 但尝试获取真正浅的全强度颜色很麻烦 最终会变得太灰 这是我当前使用的功能 getHSL
  • C# 中使用反射进行方法拦截

    我编写了一个抽象类 它使用反射来查找构造函数中标有属性的字段 如下所示 AttributeUsage AttributeTargets Field public class TrackedField Attribute public cla
  • 定义频率上的音量 (C#)

    我不明白为什么音量定义的频率不符合预期 我依次将声音以几个指定的频率发送到麦克风 然后我对麦克风缓冲区进行 FFT 在 FFT 退出时 我有一个复数数组 要了解定义频率上的声音音量 我查看我的数组 该数组中的元素数量是这样得到的 MyFre
  • 使用 Java 在线程之间传输数据

    我正在编写一个模仿电影院的多线程应用程序 每个参与的人都是自己的线程 并发必须完全由信号量来完成 我遇到的唯一问题是如何基本上链接线程以便它们可以通信 例如通过管道 例如 Customer 1 是一个线程 它获取一个信号量 让它走到票房 现
  • VBA:使用两个参数调用 SQL Server 存储过程

    正如标题中提到的 我只想从 VBA 调用 SQL Server 存储过程 我可以这样调用我的存储过程 EXEC dbo spClientXLS Nr 131783 date 21 09 2014 Nr is a varChar 50 输入值
  • 如何在不使用 GlobalKey.currentState 的情况下平滑更新 Flutter AnimatedList?

    我发现的将项目插入 Flutter AnimatedList 的所有示例都利用 GlobalKey currentState 告诉 AnimatedList 小部件已插入项目 从列表中删除也是如此 众所周知 在 Flutter 中 Glob
  • 每个列表视图项目中旋转进度条

    我已经为此挠头很久了 并寻找答案但没有任何运气 这似乎是微不足道的 但据我所知 事实并非如此 我在 Android 应用程序中使用列表视图 其中每个项目 视图 在 内容已加载并显示 内容是通过http调用和json检索的 因此可能需要一段时
  • 如何摆脱 Core 中的“let”?

    我有一个在内部循环中频繁调用的函数 它看起来像这样 import qualified Data Vector Storable as SV newtype Timedelta Timedelta Double cklsLogDens SV
  • jQuery动态下拉框ajax

    我目前有两个下拉框和一个文本框 我使用数据库查询来填充第一个下拉框 并使用 ajax 来填充第二个下拉列表 具体取决于第一个下拉列表中选择的值 一旦从第二个下拉列表中选择了一个选项 我也会使用ajax来填充输入文本框 我的问题是 使用我当前
  • 使用 VB.Net 将数据插入 SQL Server 数据库

    我目前正在使用 HDI 会员提供商 设计如下所示 现在我尝试创建一个新用户并将这些值插入数据库 如下所示 Try Dim connectionString As String Data Source sqlexpress Initial C
  • 生成掷 n 个骰子的所有可能结果的矩阵(忽略顺序)

    在顺序确实很重要的情况下 生成所有可能结果的矩阵相当容易 执行此操作的一种方法是使用expand grid如图所示here https stackoverflow com questions 2889613 how can i find o