当前位置:首页 > JavaScript

js实现概率

2026-01-31 16:40:38JavaScript

概率基础实现

在JavaScript中实现概率功能通常涉及生成随机数并结合条件判断。Math.random()方法生成0到1之间的伪随机浮点数(包含0不包含1),这是实现概率的基础。

// 生成0到1之间的随机数
const randomValue = Math.random();

简单概率判断

50%概率的实现:

if (Math.random() < 0.5) {
    console.log('50%概率触发');
}

25%概率的实现:

js实现概率

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%概率');
}

权重概率系统

当需要根据权重值计算概率时:

js实现概率

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()。概率算法的性能在大量计算时需要考虑优化,避免不必要的随机数生成。

标签: 概率js
分享给朋友:

相关文章

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…