0

宝くじの組み合わせを出力するスクリプトを作成しました。私が目指しているのはこれです: 宝くじには 1 から 49 までの 6 つの数字があり、13,983,816 の組み合わせがあることを意味します。重複がないことを確認しながら、すべての組み合わせを順番に印刷したいと考えています。

これまでの私のコードは次のとおりです。

import random
numbers = []
for i in range(2):
    for j in range(6):
        numbers.append(random.randint(1,49))
        for k in range(j):
            while numbers[j]==numbers[k]:
                numbers[j]=random.randint(1,49)
    print sorted(numbers)
    numbers = []
f = open('combinations.txt', 'w')
f.write(str(sorted(numbers)))

問題は次のとおりです。

ターミナルの出力は次のとおりです。

[18, 20, 27, 32, 44, 48]
[5, 7, 10, 13, 33, 45]

[1,2,3,4,5,6]で始まり、で終わりたいです[44,45,46,47,48,49]。だから私は結果を注文する必要があります。

また、結果を大きなテキスト ファイルに出力できるように、リストを文字列に変換しようとしましたが[]、現時点ではテキスト ファイルに出力しているだけです。

4

3 に答える 3

5

使用itertools.combinations:

>>> from itertools import combinations
>>> for comb in combinations(range(1,50), 6):
...     print comb      #Hit Enter at your own risk

組み合わせをテキストファイルに出力するには:

with open('combinations.txt', 'w') as f:
   for comb in combination:
       f.write(str(comb) + '\n')
于 2013-07-28T06:45:26.270 に答える