假设 x_1, x_2, ..., x_n 是 n 个对象,并且想要选择其中一个,以便选择 x_i 的概率与某个数字 u_i 成正比。Numpy 为此提供了一个函数:
x, u = np.array([x_1, x_2, ..., x_n]), np.array([u_1, ..., u_n])
np.random.choice(x, p = u/np.sum(u))
Run Code Online (Sandbox Code Playgroud)
然而,我观察到这段代码有时会抛出一个 ValueError ,指出“概率之和不等于 1”。这可能是由于有限精度算术的舍入误差造成的。应该怎么做才能让这个功能正常工作呢?
有一些方法,如搜索重复项,但我想知道是否有更好的解决方案来完成这项任务.