2017-01-07 10 views
2

私はランキングアルゴリズムを書いています。ランダム性係数を追加したいと思います。加重ランダムリストを作成するにはどうすればよいですか?

Iは、各項目は1から10までの値を有する10項目のリストを生成しています:

l = [random.randint(1,10) for num in range(1, 11)] 

私は400倍の周りにこのコードを実行し、DBに大きなリストを格納しています。

私はそれに確率をつけたいので、最初の5つの項目では1と5の間にラジオ番号を生成し、最後の5つの項目では5から10のラジオ番号を生成します。

確率の30%はランダム(通常モード)です。

これはPythonを使用してどのように達成できますか?それはランダムモジュールですか?

編集:私はprobabiltiyに基づいて項目を選択するために探していないよので、いくつかは、これはthis questionの重複であるかもしれないと思って、しかしそれは、代わりに私は自分の体重に基づいて配布することがしたいと思いません。

+0

@UrielEliを、私はどのようにそれを見つけることができませんでした私の場合に役立つでしょう。なぜなら、ユーザーは、自分の確率に基づいてリストから番号を選択する関数を作成したいと思っているように見えます。 –

答えて

3

以下が欲しかったランダムなリストが生成されます。

import random 


def next_random_list(): 
    # With 70% probability 
    if random.randint(1, 10) <= 7: 
     # Generate 5 random elements from 1 to 5 
     a = [random.randint(1, 5) for _ in range(5)] 

     # Generate 5 random elements from 5 to 10 
     b = [random.randint(5, 10) for _ in range(5)] 

     # Concatenate them 
     return a + b 
    else: 
     # Return just a random list of 10 numbers from 1 to 10 
     [random.randint(1, 10) for _ in range(10)] 

を、あなたはそれを400回呼び出すことができます:私は投稿する前にこのチェック

lists = [next_random_list() for i in range(400)] 
+0

ありがとう、それは元の質問には含まれていませんでしたが、リスト内で同じ番号を取得しないようにするにはどうすればよいですか? –

+1

@AnisSouames 'random.sample'を見てください。 'random.sample(範囲(5,10)、5)'の後半に使用します。 –

関連する問題