1

私はPythonで作業していますが、基本的には整数のリストがあります:

[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10]

変数totalを使用して、10が生成されるまでこのリストから(置換なしで)乱数を生成し、その後停止する方法を見つけようとしています。これはwhileループ内で使用されると考えていrandom.shuffleますが、よくわかりません。ヒントやアドバイスはありますか?

4

2 に答える 2

2

からランダムな要素を pop() し、totalそれが10. 例えば:

while total.pop(random.randrange(len(total))) != 10:
     ... # do your stuff until the 10 is chosen

total.pop(i) はtotalindex の要素から削除するiため、これはreplacement なしで機能します。また、この回答を確認してください

編集:
おそらく、同じ要素を複数回使用することで達成しようとしているのは、加重ランダム選択です。それはかなり醜い解決策です。その場合は、この質問 (置換ありとなしの加重ランダム選択) が役立つかどうかを確認してください。乾杯。

于 2013-02-09T21:49:54.633 に答える
1

使用random.shuffleするのにループは必要ありません。

random.shuffle(l)
random_selection = l[ :l.index(10) ]
于 2013-02-09T22:03:58.253 に答える