Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算y边滚动x模具的所有可能总和_Python_Arrays_Numpy - Fatal编程技术网

Python 计算y边滚动x模具的所有可能总和

Python 计算y边滚动x模具的所有可能总和,python,arrays,numpy,Python,Arrays,Numpy,我正在写一个函数,帮助我计算一个可变边数的骰子和一个可变边数的可能结果(例如,两个六边骰子和一个四边骰子的总和),我被难住了一段时间 例如,滚动两个三面模具应输出一个包含所有9种可能组合的阵列: [[1,1], [1,2], [1,3], [2,1], (etc.) [3,2], [3,3]] 我也不太明白。我已经设法生成了要枚举的范围,但我不能完全做到 dice = [6,6] diceRanges = [range(0, die) for die in dice] diceI

我正在写一个函数,帮助我计算一个可变边数的骰子和一个可变边数的可能结果(例如,两个六边骰子和一个四边骰子的总和),我被难住了一段时间

例如,滚动两个三面模具应输出一个包含所有9种可能组合的阵列:

[[1,1],
 [1,2], 
 [1,3],
 [2,1],
 (etc.)
 [3,2],
 [3,3]]
我也不太明白。我已经设法生成了要枚举的范围,但我不能完全做到

dice = [6,6]
diceRanges = [range(0, die) for die in dice]
diceIndex = [0 for die in dice]

outcomes = []

for idx, rng in enumerate(diceRanges):
    for var in rng:
        diceIndex[idx] = var
        outcomes.append([val for val in diceIndex])
        
outcomes
我见过一些事情,但从来没有像看上去那么简单


干杯

使用itertools很简单:

import itertools

outcomes = list(itertools.product(*diceRanges))
仅使用numpy

dice_sides = 6
dices_values = np.arange(1,dice_sides+1)
outcome =  np.dstack(np.meshgrid(dices_values, dices_values)).reshape(-1,2)

Out[313]:
array([[1, 1],
       [2, 1],
       [3, 1],
       [4, 1],
       [5, 1],
       [6, 1],
       [1, 2],
       [2, 2],
       [3, 2],
       [4, 2],
       [5, 2],
       [6, 2],
       [1, 3],
       [2, 3],
       [3, 3],
       [4, 3],
       [5, 3],
       [6, 3],
       [1, 4],
       [2, 4],
       [3, 4],
       [4, 4],
       [5, 4],
       [6, 4],
       [1, 5],
       [2, 5],
       [3, 5],
       [4, 5],
       [5, 5],
       [6, 5],
       [1, 6],
       [2, 6],
       [3, 6],
       [4, 6],
       [5, 6],
       [6, 6]])

从理论上讲,我希望创建一个n维数组,其中包含每个维度的索引值之和。我说不出话来。谢谢!