跳转到内容

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