js实现几率
js实现概率控制的方法
在JavaScript中实现概率控制通常涉及生成随机数并结合条件判断。以下是几种常见方法:
使用Math.random()基础方法
const probability = 0.3; // 30%概率
if (Math.random() < probability) {
// 命中概率的事件
}
权重概率系统
当需要处理多个不同概率的事件时:

const options = [
{ value: 'A', weight: 0.1 },
{ value: 'B', weight: 0.3 },
{ value: 'C', weight: 0.6 }
];
function weightedRandom(options) {
const random = Math.random();
let sum = 0;
for (const option of options) {
sum += option.weight;
if (random <= sum) return option.value;
}
}
概率分布函数
对于更复杂的概率分布需求:
// 正态分布概率
function normalDistribution(x, mean = 0, stdDev = 1) {
return Math.exp(-0.5 * Math.pow((x - mean) / stdDev, 2)) / (stdDev * Math.sqrt(2 * Math.PI));
}
真随机数增强
使用Web Crypto API获取更高质量的随机数:

function getCryptoRandom() {
const array = new Uint32Array(1);
window.crypto.getRandomValues(array);
return array[0] / 4294967295;
}
概率衰减/递增算法
随时间变化的动态概率:
let baseProbability = 0.1;
const attempts = 5;
function getDynamicProbability(attempt) {
return baseProbability * (1 + attempt/attempts);
}
注意事项:
- Math.random()在大多数浏览器中生成伪随机数,不适合安全关键场景
- 浮点数比较可能存在精度问题,应考虑使用容差范围
- 复杂概率系统可能需要引入状态机或概率树结构
这些方法可以组合使用,根据具体需求构建各种概率控制系统,如游戏抽奖、AI决策等场景。






