9

ランダムなブール値を取得しようとしていますが、加重パーセンテージを使用しています。たとえば、ユーザーにパーセンテージ (つまり 60) を渡すようにすると、ジェネレーターは 60% の確率で真をランダムに選択します。

私が持っているのはこれです:

def reset(percent=50):
    prob = random.randrange(0,100)
    if prob > percent:
        return True
    else:
        return False

これを行うより良い方法はありますか?これは非効率的で面倒に思えます。データをシミュレートするために使用されるだけなので、完璧である必要はありませんが、できるだけ高速である必要があります。

(Google/SO) を検索しましたが、これに関する他の質問は見つかりませんでした。

4

3 に答える 3

21

テストを返すだけです:

def reset(percent=50):
    return random.randrange(100) < percent

<より低い演算子の結果はすでにブール値であるためです。開始値も指定する必要はありません。

特定のパーセンテージで返されたい場合は、lower thanを使用する必要があることに注意してください。たとえば、生成されるすべての値がその値を下回っているTrue場合などです。percent = 100Truerandrange()percent

于 2013-01-14T18:40:18.230 に答える
2

どうですか:

def reset(percent=50):
    return random.randrange(0, 100) > percent
于 2013-01-14T18:40:19.167 に答える
1

@rjbez Xパーセンテージでtrueを返す関数を要求しました。X == 0% の場合、常に false を返す必要があります。X == 100% の場合、常に true を返す必要があります。現在受け入れられている回答は現在修正されており、適切な関係があります

def reset(percent=50):
    return random.randrange(100) < percent
于 2014-09-24T21:28:14.090 に答える