sample_discrete
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)
范围,输出将被限制在该范围内,
以减少 u
的舍入误差导致的问题。
weights
相对权重数组(总和不需要为 1),对应 [0,len(weights)-1]
范围内每个整数值的权重。
u
一个介于 0 和 1 之间的数。
根据 u
返回一个整数,要么是从 0 到 nvalues-1
均匀加权,
要么是基于 weights
数组从 0 到 len(weights)-1
加权返回。
给定 [0,1)
范围内均匀随机的 u
值,接受 nvalues
的版本
将返回 [0,nvalues-1]
范围内的均匀随机整数,而接受 weights
的版本
将返回 [0,len(weights)-1]
范围内的随机整数,其中
i
的概率为 weights[i]/sum_of_weights
。