我正在寻找所有可能的方法来滚动5个六面骰子。我知道在python中你可以使用itertools来做到这一点,c#中有什么东西可以达到同样的效果吗?
itertools.combinations_with_replacement(iterable, r)
for i in itertools.combinations_with_replacement(range(1, 6), 5)
https://docs.python.org/dev/library/itertools.html#itertools.combinations_with_replacement
范围1,6是骰子上的脸部数量,5是掷骰子的数量。想要生产所有7776种方式,你可以掷骰子。例如初始卷可能看起来像:
骰子1,骰子2,骰子3,骰子4,骰子5 = 1,2,3,4,5答案 0 :(得分:2)
这很容易 - 它基本上是cross join,范围为1-6 5倍。
var range = Enumerable.Range(1,6);
var result = from d1 in range
from d2 in range
from d3 in range
from d4 in range
from d5 in range
select new { d1,d2,d3,d4,d5 };
答案 1 :(得分:-2)
3615建议的实施:
Random root = new Random();
List<int> results = new List<int>()
for (int i = 0; i < 5; i++)
{
results.Add(root.Next(1, 6));
}
//results now contain the 5 dice throws