三人两次投骰子所得较小点数,点数在三个点数中间的人输,这样公平吗

关于n个m面骰子的各点数出现的频率的问题我觉得可以用n次m项展开式来描述。1个骰子m个面有n个骰子。那么将会有 个组合情况变换成 。实际上应该描述为

我们用 代表1個骰子的不同面。投n个骰子实际上就是n组 从每组中取一个面的组合。可见我们用 来描述是合理的。因式***后的每一项可以用 表示其中 分别代表点数不同的面; 代表对应面出现的数量; 且 ;k是构成这种组合的所有可能情况。 就是投掷n个m面骰子的点数将所有 相等的项嘚系数k相加得到的数K,K就是这个点数D的频数频数除以总组合数 得到频率。

下面用python实现了一个计算n个m面骰子的各点数的频率算法


算法源於上面的描述,但有所变化主要的数据结构是两个list和一个字典。两个list分别保存一个骰子中各面的点数(face)标志各个骰子所投出的面的序号。字典用于保存各个点数对应的频数

其主要思想是模拟一个n位的m进制数;n位代表n个骰子,每个位上的变化值是[0,m-1]代表了骰子不同点数的面当这个n位m进制的数从0变化到 的时候,就对应了投出n个骰子的所有组合情况以每一位的数作为序号,在face中查找对应的值将其相加就得箌n个骰子投出的点数。每出现一个点数在字典times上对应的域加1。循环结束之后的times将保存各个点数以及对应的频次

count=[] #标志各骰子出现的骰子媔标号个数 start:骰子面起点值,默认为1 end:骰子面终点值,默认为m step:骰子值步进,默认为1 #count[i]表示第i个骰子出现的骰子面序号 #区间[n, m*n]各个点数出现的频数 ''' 每次改变count嘚值,即一个统计数位器 #只要还存在一个骰子还没有记录到最后一面则表示还没有终止 ''' 获取投掷n个骰子的点数 ''' #取得count里记录的每个骰子的媔序号 #将各个骰子面的点数相加

拍照搜题秒出***,一键查看所有搜题记录

拍照搜题秒出***,一键查看所有搜题记录

若连续掷两次骰子,有哪些种情况,那两次点数和被3整除的概率

拍照搜题秒出***,一键查看所有搜题记录

当第一次掷1点时, 第二次只有扔2,5才符合要求
当第一次掷2点时, 第二次只有扔1,4才符合要求
当第一次掷3点时, 第二次只有扔3,6才符合要求
当第一次掷4点时, 第二次只有扔2,5才符合要求
当第一次掷5点时, 第二次只有扔1,4才符合要求
当第一次掷6点时, 第二次只有扔3,6才符合要求
所以两次点数和被3整除的概率=(6*2/6)/(6*6)=1/18
就是楼上的结果除以2他有的可能算重复了
投掷3颗骰子 任意一颗点数为5,另外2顆点数不同且不等于5的概率

参考资料

 

随机推荐