js实现概率
概率基础实现
在JavaScript中实现概率功能通常涉及生成随机数并结合条件判断。Math.random()方法生成0到1之间的伪随机浮点数(包含0不包含1),这是实现概率的基础。
// 生成0到1之间的随机数
const randomValue = Math.random();
简单概率判断
50%概率的实现:
if (Math.random() < 0.5) {
console.log('50%概率触发');
}
25%概率的实现:

if (Math.random() < 0.25) {
console.log('25%概率触发');
}
多概率分支处理
对于多个不同概率的事件,可以使用累加概率区间的方式:
const random = Math.random();
if (random < 0.1) {
console.log('10%概率');
} else if (random < 0.3) {
console.log('20%概率');
} else if (random < 0.6) {
console.log('30%概率');
} else {
console.log('40%概率');
}
权重概率系统
当需要根据权重值计算概率时:

const items = [
{name: 'A', weight: 2},
{name: 'B', weight: 3},
{name: 'C', weight: 5}
];
const totalWeight = items.reduce((sum, item) => sum + item.weight, 0);
const random = Math.random() * totalWeight;
let currentWeight = 0;
for (const item of items) {
currentWeight += item.weight;
if (random < currentWeight) {
console.log(`选中: ${item.name}`);
break;
}
}
概率分布函数
实现正态分布(高斯分布)随机数:
function normalRandom(mean = 0, stdDev = 1) {
let u = 0, v = 0;
while(u === 0) u = Math.random();
while(v === 0) v = Math.random();
return mean + stdDev * Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
}
概率验证测试
验证概率实现的准确性:
function testProbability(fn, iterations = 10000) {
let hits = 0;
for (let i = 0; i < iterations; i++) {
if (fn()) hits++;
}
return (hits / iterations * 100).toFixed(2) + '%';
}
console.log(testProbability(() => Math.random() < 0.3));
注意事项
Math.random()不适合安全关键场景,如需加密安全随机数应使用crypto.getRandomValues()。概率算法的性能在大量计算时需要考虑优化,避免不必要的随机数生成。






