重複の可能性:
random.choiceの加重バージョン
簡単にするために、関数が4つの入力を受け取るとしましょう:2つの名前とそれぞれの「バイアス/重み」、関数がどちらかa
またはb
ランダムに返されるが、それらの重みをランダムな結果に考慮するように関数を作成するにはどうすればよいですか?
a = 'x'
b = 'y'
p_a = 10
p_b = 90
def myRand(a, p_a, b, p_b):
return 'x' 10% of the time, 'y' 90% of time
私がこれまでにしたこと
import random
def myRand(a, p_a, b, p_b):
probs = [a]*p_a + [b]*p_b
return random.choice(probs)
誰かがこれが間違っている、または最良の答えではない理由を指摘できますか?私の正当な理由は、すべての要素が同じ確率で選択されると想定しているため、結果は10:90を優先するはずです。または、使用する前にアレイをシャッフルできrandom.choice()
ますか?
これを行うためのより良い方法はありますか?たぶん私はここで明白な何かを見逃していますか、それともこれは正しいですか?
ありがとう