JavaScript 中的 numpy.random.choice?

A.D*_*A.D 1 javascript random node.js

Numpy.random.choice 是一个很好的简单函数,它允许您根据某种概率分布对整数数组进行采样:

>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0])
Run Code Online (Sandbox Code Playgroud)

javascript (node js) 中有等效的吗?

注意:我找到了这个包https://www.npmjs.com/package/random-weighted-choice,但我不喜欢每次需要获取示例时都创建哈希图/表。

tri*_*cot 5

你可以使用这个 ES6 代码:

function randomChoice(p) {
    let rnd = p.reduce( (a, b) => a + b ) * Math.random();
    return p.findIndex( a => (rnd -= a) < 0 );
}

function randomChoices(p, count) {
    return Array.from(Array(count), randomChoice.bind(null, p));
}

let result = randomChoices([0.1, 0, 0.3, 0.6, 0], 3);
console.log(result);
Run Code Online (Sandbox Code Playgroud)

reduce部分计算概率的总和。如果预计这些值始终等于 1,那么该调用当然是不必要的,而且rnd = Math.random()就足够了。