问题标签 [dice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 骰子赔率:模拟掷骰子游戏
几周后我的兄弟就 21 岁了,我和父母要带他去拉斯维加斯。在我 21 岁的时候,我带了 200 美元去维加斯赌博,然后带着大约 450 美元回家,大部分来自玩掷骰子。我计划再次为这次旅行带来 200 美元,在我去之前,我想我会进行一些掷骰子模拟,看看我是否可以再次将我的钱翻倍。
我从多个消息来源了解到,在以最大赔率下注时,赌场在掷骰子上的优势最小。根据我的记忆,并且根据赔率向导的调查,拉斯维加斯大道上的大多数赌场都是 3-4-5 赔率,最低赔率为 5 美元。考虑到这一点,这里是一个 PHP 中的掷骰子会话(100 次掷骰子)的模拟:
我的数学有什么问题吗?虽然每个时段都有高峰和低谷,但这种模拟通常会在破产之前将其资金翻倍。考虑到房子在掷骰子时总是有优势,即使只是百分之几,我对这个结果感到困惑。
c++ - 特化类模板构造函数
我在搞乱模板专业化,并且在尝试根据使用的策略专门化构造函数时遇到了问题。这是我试图开始工作的代码。
...\main.cpp(29): error C3860: template argument list following class template name must list parameters in order to used in template parameter list ...\main.cpp(29): error C2976: 'Die' :模板参数太少 ...\main.cpp(31):错误 C3860:类模板名称后面的模板参数列表必须按照模板参数列表中使用的顺序列出参数
这些是我在 Microsoft Visual Studio 2010 中遇到的错误。我想要么我无法为专业化找出正确的语法,要么不可能这样做。
distribution - 用 6 面骰子计算赔率分布
我正在尝试计算不断变化的 6 面掷骰数的几率分布。例如,3d6 的范围从 3 到 18,如下所示:
我写了这个 php 程序来计算它:
内部 $j for 循环使用底数和模数函数的魔力来创建一个以 6 为基数的计数序列,其中位数是骰子的数量,因此 3d6 将被视为:
该函数取每个的总和,因此它会读作:3,4,5,6,7,8,4,5,6,7,8,9,5 等。它遍历所有 6^3 个可能的结果,并将 1 添加到 $distribution 数组中 3 到 18 之间的相应槽。非常简单。然而,它只工作到大约 8d6,之后我得到服务器超时,因为它现在正在进行数十亿次计算。
但我认为没有必要,因为死亡概率遵循甜美的钟形曲线分布。我想知道是否有办法跳过数字运算并直接进入曲线本身。有没有办法做到这一点,例如,80d6(范围:80-480)?可以在不进行 6^80 计算的情况下预测分布吗?
我不是专业的编码员,概率对我来说还是个新手,所以感谢所有帮助!
斯蒂芬
algorithm - 生成一个包含所有可能掷骰子结果的矩阵(忽略顺序)
在顺序确实很重要的情况下,生成所有可能结果的矩阵相当容易。这样做的一种方法是使用此处expand.grid
所示。
如果没有怎么办?
如果我是对的,那么可能的组合数是(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 个可能结果的矩阵?
谢谢你。
java - 递归导致额外的不需要的数据
我正在编写一个模块来处理掷骰子。给定 x y 边的骰子,我试图列出所有潜在的掷骰组合。
这段代码假设有 3 个骰子,每个骰子有 3 个面,分别标记为 1、2 和 3。(我意识到我使用的是“幻数”,但这只是为了简化并让基本代码正常工作。)
(dump() 是一种简单的方法,只显示 list[] 的内容。变量i暂时不用。)
我正在尝试做的是将 list[index] 递增一,逐步遍历列表的整个长度并随着我的前进而递增。
这是我的“最佳尝试”代码。这是输出:
粗体输出是我正在寻找的。我不知道如何摆脱其余的。(这是假设三个骰子,每个骰子有 3 个面。使用递归,所以我可以将它扩展到任何具有 y 面的 x 骰子。)
[1][1][1] [1][1][1]
[1][1][1] [1][1][2] [1][1][3] [1][2][3]
[1][2][1] [1][2][2] [1][2][3] [1][3][3]
[1][3][1] [1][3][2] [1][3][3] [2][3][3] [2][1][3]
[2][1][1] [2][1][2] [2][1][3] [2][2][3]
[2][2][1] [2][2][2] [2][2][3] [2][3][3]
[2][3][1] [2][3][2] [2][3][3] [3][3][3] [3][1][3]
[3][1][1] [3][1][2] [3][1][3] [3][2][3]
[3][2][1] [3][2][2] [3][2][3] [3][3][3]
[3][3][1] [3][3][2] [3][3][3]
我为格式道歉,我能想出的最好的。
任何帮助将不胜感激。(这种方法实际上是为了将数据用于非常琐碎的事情,但已经变成了个人挑战。:)
编辑:如果有另一种方法来解决这个问题,我会全力以赴,但我也想解决我当前的问题并成功地将递归用于有用的东西。
edit2:运行代码,包括“简单修复”。当心未使用的变量和奇怪的黑客,我还没有清理它。
python - 确定掷骰子是否包含某些组合?
我正在用 Python 编写一个骰子游戏模拟器。我使用一个包含 1-6 整数的列表来表示一个滚动。所以我可能会有这样的卷:
我需要确定一卷是否包含计分组合,例如 3 种、4 种、2 组 3 和顺子。
有没有一种简单的 Pythonic 方式来做到这一点?我尝试了几种方法,但结果都是一团糟。
java - Java setter、getter(掷骰子)
我有一些关于java的问题。代码中有两个问题(我将它们作为评论留下)。另外使用设置和获取方法的目的是什么?你能不能简单地解释一下。我是初学者。谢谢 :)
math - 骰子左/右的数字?
我想知道是否有一个公式/技巧来计算标准 6 面骰子的右边或左边的数字,如果你知道哪个数字在上面,哪个数字面向你。
需要它来解决问题,但我不想在 if 语句中列出所有 24 种可能性...... :)
algorithm - 在掷骰子算法方面需要一些帮助
我将如何对以下方法的算法进行伪编码:
滚动一种模具 - 4 、 6 、 8 、 10 或 12 面
最多可以滚动十个这种类型的骰子
如果超过一半的骰子是 1,则打印一条消息,表明它们已失败并结束程序
如果任何骰子与掷出的骰子类型相同,则从该组中取最高值。以及重新掷出与掷出的骰子类型值相等的骰子。
^^^^IE - 假设你有 3 个六面骰子,你掷骰子得到 4、2 和 6。你取 6 的值,因为它是最高的。然后你重新掷骰子是六。如果你得到一个六,你把那个六加到前面的六上,然后重新掷骰。如果不是,您只需将那里的最高骰子添加到先前的值。
java - Dice notation(递归下降解析实现):没有分隔符的扫描器
如果可能,我想使用 java Scanner构建骰子符号的递归下降解析实现。我之前已经提出了一个关于它的问题,但似乎我的要求过于简单。所以我在这里提出了全球性的要求。
我真的希望这对 java.util.Scanner 类是可行的,但如果需要,我会编写自己的扫描仪。我现在想避免这个。
所以实际上,我已经尝试编写以下代码:
但显然它一直在失败。
同样如上一个问题中所建议的那样,我尝试了 findWithinHorizon 方法,但它确实找到了下一个模式并且不检查我的位置。所以如果它不是我需要的,我不能“推回”字符串......
那么关于我应该如何在这种情况下使用 java.util.Scanner 的任何建议?或者也许我必须编写自己的扫描仪?