2017-11-28 3 views
-3

私は整数のリストを持っており、その合計が変数以下であるすべての整数を出力したいと思います。私の合計は38以下です。私の合計が15以下の場合は、下のリストの値をランダムに返すのですか?私は以下の関数を適用しようとしましたが、うまくいきません。合計がPythonの別の整数以下である整数をランダムに出力する方法は?

j=[4,5,6,7,1,3,7,5] 
x = 15 
jSum = sum(j) 


def decomposition(i): 
    while i <= x: 
     n = random.randint(j, i) 
     yield n 
     i -= n 
     print i 
decomposition(jSum) 
+0

指定された最大値を超えない範囲の数値を生成したいですか? – user1767754

+0

ええ、その範囲は 'j 'でなければなりません –

+1

ここで何をしようとしているのか分かりません。あなたは、38を超えないで、できるだけ多くの整数をリストに要約したいだけですか?そして、どんなエラーが出ていますか?あなたはあなたの質問をより良く書く必要があります。 –

答えて

1

のはsums< xで可能listslistを作成してみましょう。その後、ちょうどrandomlyrandom.choiceとのいずれかを選択

ops=[list(c) for l in range(1,len(j)) for c in itertools.combinations(j,l) if sum(c) < x] 

::これは、2つのネストされたfor-loopsitertools.combinationsで行うことができます

random.choice(ops) 

をそして私はj = [4,5,6,7,1,3,7,5]x = 15ランダム出力でこれを実行したときに私が得ました:

[6, 1, 3] 

どの作品が! (sum< 15であり、すべての要素はjです)

+0

まさに私が探していた@Joe Iddon –

+1

@GeoffreyWest問題ないですが、助けてください!あなたの質問を次回より明確に表現するように努めてください。 **:)** –

関連する問題