sample from a discrete distribution

假设一个变量X的取值范围为X={x1,x2,x3,...,xk},对应的值分别为s1,s2,...,sk,现在想采用random的方法去取一个值xi.

方法:

1.随机产生一个在闭区间[0,1]的随机数R;

2.将闭区间[0,1]分成k分,左闭右开区间[0,s1),[s1,s1+s2),....,;

3.查找R所在的区间,如果R在第i个区间,则取值就为xi

时间复杂度:采用bsearch,或者红黑树,O(logk)

你可能感兴趣的:(Random)