2016-08-02 3 views
0

5 면체 주사위를 굴리는 가능한 모든 방법을 찾고 있습니다. 나는 python에서 itertools를 사용하여이 작업을 수행 할 수 있음을 알고있다. C#에서도 동일한 결과를 얻을 수 있는가? 거기에 피톤즈의 C# 상당 itertools.combinations_with_replacement

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 가지 방법을 만들고 싶습니다. 예 : 3615 제안하는 것에 대해 = 1,2,3,4,5

+0

당신의 입력과 예상 출력을 보여주십시오 - 당신은 또한 당신이 C#에서 재현하려는 관련 Python을 포함 할 수있다. – Jamiec

+0

가능한 모든 조합 또는 조합의 수가 필요합니다. –

+0

그래서 (필자의 파이썬은 훌륭하지 않다.)'range (1,6)'은'[1,2,3,4,5,6]'과' '5'의 combine_with_replacement'는'12345','23456','13456' 등 모든 조합의 5 가지 값을 원한다고 말합니다. (만약 오른쪽면, 당신의 질문에 그 설명과 같은 것이 아무것도 없었습니다!) – Jamiec

답변

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 }; 

라이브 예 : http://rextester.com/VKA17045

+0

이것은 다른 질문 일 가능성이 있습니다. 그러나 이것은 1, 6, 5 주사위에 잘 맞지만, 프로그램이 멈추는 라거 숫자로 시도해 보았습니다. 이 규모를 만들 수있는 방법이 있습니까, 아니면 조합 수가 너무 많아 지나요? – danny

+0

@danny too too large. 어떤 범위/조합 수를 시도하고 있습니까? – Jamiec

+0

나는 20 개의 주사위를 가지고 1, 12면을 시도했다. – danny

-2

구현

주사위 1 주사위 2 다이스 (3), 다이스 (4), 다이스 (5) : 초기 롤 같을 수

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 
+0

나는 이것이 어떻게 질문에 대답 하는지를 모른다. 너는 1-6 5 번 사이에 무작위 숫자를 얻고 각 반복 결과를 버린다. – Jamiec

+0

솔직히이 대답으로 조금 게으르다. 너는 옳다. 대답은 버려집니다. 그냥 할 일의 일반적인 방향을 알려줄 것이라고 생각했습니다. – MichaelThePotato