2016-06-22 4 views
0

私はマッチメイキングロジックで作業するように求められました。私は自分のコードに次のパーセンテージを与える必要があります(65%、30%、4% 、1%)が、私はちょうどそれが最適な実装だかどうかを確認したい、またはあなたたちは、他のアイデアを持っている場合:65%、30%、4%、1%

random_session = await create_random_session(
    connection, 'group', session_size=4, random_value = "case1", "case2", "case3", "case4", 
     ) 
    for for random_value in random_session: 
       if random.randint(0, 100) < 65: 
        random_value = "case1" 
         continue 
      else: 
       random.randint(0, 100) < 30: 
        random_value = "case2" 
         continue 
      else: 
       random.randint(0, 100) < 4: 
        random_value = "case3" 
         continue 
      else: 
       random.randint(0, 100) < 1: 
        random_value = "case4" 
         continue 
+0

のために存在するの答えはYesですが、私は私ができることを願っていますそれをより速くする。 –

+1

codereview.stackexchange.comに属しているので、この質問を議論の対象外とすることにしました。 – blue112

答えて

0

あなたの実装は間違っています。一度サンプルを抽出し、各基準(つまり、65%、30%、4%、または1%)をテストする必要があります。

たとえば、最初のテストでは値1のランダム変数が生成されたとします。最初の条件は失敗します。ここで、2番目のテストで1のランダムな変量が得られたとします。この場合も、2番目の条件は失敗します。同様に、3番目の条件はランダムな1の変量で失敗します。最後に、上記の条件が満たされ、4番目のテストで1のランダムな変量が得られると、条件は合格してcase4を返します。ケース4を返すために書かれたよう言い換えれば、では、(同等)が必要です。

random.randint(0,100) < 1 and random.randint(0,100) < 1 and random.randint(0,100) < 1 and random.ranint(0,100) < 1 

同様の問題は、最初の2個にケース2とケース3

+0

はい、そうです。実際、私は間違ったコードをコピーして貼り付けています。ありがとう。 –

+0

スレッドが種類が古くても、それは私が記述したパーセンテージを与える方法です:def get_give_random_percentage(case_1_percentage = 65、 case_2_percentage = 30、case_3_percentage = 4、 case_4_percentage = 1): value = ['case1 '] * case_1_percentage + [' ケース2 '] * \ case_2_percentage + [' CASE3 '] * \ case_3_percentage + \ [' CASE4' ] * case_4_percentage 戻りrandom.choice(値) –

0

あなたはそれぞれのケースのために新しいランダムなint型を作成しているので、それらのどれもしていないことが起こるかもしれませんtrueとした後、ランダムな値は定義されません。ランダムな整数を1つだけ作成し、これを防ぐためにすべてのケースでそれを比較します。

ループ変数への代入もこのようには機能しません。

x=[0,0,0,0] 
for i in x: 
    i=3 
    print x 

があなたに与えます:

[0, 0, 0, 0] 
[0, 0, 0, 0] 
[0, 0, 0, 0] 
[0, 0, 0, 0] 

x=[0,0,0,0,0] 
for i in range(len(x)): 
    x[i]=3 
    print x 

をので、あなたはすべてを通過し、私もあなたがcontinue代わりのbreakを使用したいと思います

[3, 0, 0, 0] 
[3, 3, 0, 0] 
[3, 3, 3, 0] 
[3, 3, 3, 3] 

あなたに

を与えます random_session

関連する問題