int sample_discrete(int nvalues, float u)
int sample_discrete(float weights[], float u)
nvalues
返される整数値は、[0,nvalues-1]
範囲では均等で、u==0
では0、u==1
ではnvalues-1
を返します。
u
が[0,1)
(つまり、0以上1未満)範囲外の場合には、その出力をその範囲に制限してu
の値を丸めることで、問題が起きないようにしています。
weights
[0,len(weights)-1]
範囲の各整数値の相対ウェイト(合計が1である必要はありません)。
u
[0,1)
(つまり、0以上1未満)範囲の数値。
u
、0からnvalues-1
までの均一なウェイト、または0からlen(weights)-1
までのweights
配列に基づいたウェイトに基づいて整数を返します。
[0,1)
(つまり、0以上1未満)範囲の均等にランダムなu
値を指定すると、nvalues
を受け取るバージョンは[0,nvalues-1]
範囲の均等にランダムな整数を返します。
weights
を受け取るバージョンは[0,len(weights)-1]
範囲のランダムな整数を返します。i
の確率は、weights[i]/sum_of_weights
です。
See also |