生成掷 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 个骰子的所有可能结果的矩阵(忽略顺序) 的相关文章

  • 是否可以通过扫描从控制台读取而不回显字符?

    这是一个示例函数 passwordEntry lt function cat Enter your password pwd lt scan n 1 what character quiet TRUE invisible pwd 并测试该功
  • 如何从 R 运行带有特定模块的 perl 脚本?

    我可以从终端运行 perl 脚本 myperlscript pl 没有任何问题 但是 如果我尝试从 RStudio 中运行相同的 perl 脚本 则会出现以下错误 command lt myperlscript pl outputfile
  • 如何用外部图像填充地图边界?

    我正在创建一张带有州边界的巴西地图 这可以直接使用ggplot2 and geom sf 然而 这一次 我不想用数据填充每个状态的颜色 而是想用外部图像 png 填充每个状态的边界 类似于this https online olivet e
  • 重复测量引导统计数据,按多个因素分组

    我有一个看起来像这样的数据框 但显然还有更多行等 df lt data frame id c 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 cond c A A B B A A B B A A B B A A B B co
  • 如何删除箱线图上的刻度线

    我试图从箱线图中删除 x 轴刻度线 但保留与刻度线关联的标签 这在基础 R 中可能吗 colors lt c lightskyblue3 gray78 gold1 wheat1 boxplot avgscore module data mi
  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • 选择 R 中的数据表中隐藏时(在绿色加号下方)列的显示顺序

    Context 使用 DataTables 库制作交互式表格时 当屏幕宽度对于列的数量和宽度来说太窄时 列将隐藏在绿色 号下 我有一个非常宽的表格 有 20 多列 其中一些内容非常冗长 因此某些列在所有屏幕宽度下总是隐藏的 每次隐藏新列时
  • 通过间接引用列来修改数据框中的某些值

    我正在整理一些数据 我们将失败的数据分类到垃圾箱中 并按批次计算每个分类箱的有限产量 我有一个描述排序箱的元表 这些行按升序测试顺序排列 一些排序标签带有非语法名称 sort tbl lt tibble tribble weight lab
  • 如何在 C# 中以编程方式创建柔和的颜色?

    根据所需的颜色数量均匀分布地生成它们 如果指定的计数为 8 则看起来像这样 List
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • 尝试读取 CSV 文件时出现“无法识别的字符串转义”

    我正在尝试导入一个 csv文件 以便我可以观看此视频 R ggplot2 图形直方图 http www youtube com watch v 47kWynt3b6M 我安装了所有正确的软件包 包括ggplot以及相关的包 视频中的第一个说
  • 当给定块大小时反转单链表

    有一个单连接链表 并给出了块大小 例如 如果我的链表是1 gt 2 gt 3 gt 4 gt 5 gt 6 gt 7 gt 8 NULL我的块大小是4然后反转第一个4元素 然后是第二个 4 个元素 问题的输出应该是4 gt 3 gt 2 g
  • pyomo + 网状错误 6 句柄无效

    我正在尝试运行pyomo优化 我收到错误消息 Error 6 The handle is invalid 不知道如何解释它 环顾四周似乎与特权有关 但我不太明白 在下面找到完整的错误跟踪以及重现它的玩具示例 完整的错误跟踪 py run f
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • 如何在文本集中创建所有字符组合?

    例如 我有这样的文本集 第 1 栏 a b 第 2 栏 l m n 第 3 栏 v w x y 我想将它们组合起来以获得如下输出 alv alw alx aly amv amw amx amy 这将输出 24 种文本组合 如果我只使用前两列
  • 只读取选定的列

    谁能告诉我如何仅读取下面每年数据的前 6 个月 7 列 例如使用read table Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2009 41 27 25 31 31 39 2
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt
  • 旋转 Markdown 的表格 pdf 输出

    我想将 pdf 上的表格输出旋转 90 度 我正在使用 Markdown 生成报告并kable循环显示表格 如果可以的话我想继续使用kable因为还有很多其他依赖于它的东西我没有包含在这个 MWE 中 这是一个简单的例子 使用iris数据集

随机推荐

  • 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