抱歉我的英语不是很好。这对我来说是新主题(我的意思是我第一次使用英语谈论它 :) 所以我可以犯一些错误)。
所以问题。
例如,我有 3 个变体。概率是:例如 0.5、0.2、0.3。我现在如何选择要选择的变体?我想我可以这样做:
- 创建区间[0; 1].
- 以较小的间隔(在我的示例中为 3)将其分开。 [0; 0.5), [0.5, 0.7), [0.7, 1]。
- 生成一个从 0 到 1 的随机数(float,double)
- 检测号码所属的区间
例如生成了 0.3,所以第一个间隔,所以第一个变体。
- 这是正确的方法吗?
- 如何使用 JavaScript 对此进行编码或至少使用伪代码进行展示。
P.S.:我每次都有动态数量的变体。
谢谢。
最佳答案
这是正确的方法,您可以像这样让它工作:
var rand = Math.random();
if (rand < 0.5) {
// first variant
} else if (rand < 0.7) {
// second variant
} else {
// third variant
}
您不需要在条件中完全指定区间,因为 Math.random()
从区间 [0,1] 生成实数。
对于动态数量的变体,您可以创建间隔的相应右端数组并循环遍历它:
var intervals = [0.1, 0.25, 0.28] // note that the array has to be sorted for this to work
var rand = Math.random();
for(i in intervals) {
if (rand < intervals[i]) {
// i-th variant
break;
}
}
关于javascript - 基于概率的变体选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22898235/