当前位置:首页 > JavaScript

js实现概率

2026-03-02 07:47:43JavaScript

生成随机数

JavaScript中可以通过Math.random()生成一个0到1之间的伪随机数,包含0但不包含1。这是实现概率计算的基础。

const randomValue = Math.random(); // 0 <= x < 1

基础概率判断

假设需要实现30%概率触发某个事件,可以直接比较随机数与阈值:

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

多概率分支

当需要处理多个不同概率的事件时,可以采用累加概率区间的方式:

const random = Math.random();
if (random < 0.2) {
    console.log('20%概率事件');
} else if (random < 0.5) { // 0.2-0.5 => 30%
    console.log('30%概率事件');
} else {                   // 剩余50%
    console.log('50%概率事件');
}

权重概率系统

对于需要按权重分配概率的场景,可以先将权重归一化:

const items = [
    { name: 'A', weight: 2 },
    { name: 'B', weight: 3 },
    { name: 'C', weight: 5 }
];

const totalWeight = items.reduce((sum, item) => sum + item.weight, 0);
let random = Math.random() * totalWeight;

for (const item of items) {
    if (random < item.weight) {
        console.log(`选中: ${item.name}`);
        break;
    }
    random -= item.weight;
}

概率分布函数

如果需要特定概率分布(如正态分布),可以使用转换方法:

// Box-Muller变换生成正态分布随机数
function normalRandom(mean = 0, std = 1) {
    let u = 0, v = 0;
    while(u === 0) u = Math.random();
    while(v === 0) v = Math.random();
    return mean + std * Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
}

概率补丁验证

为确保概率准确性,可以通过大量测试验证:

js实现概率

let count = 0;
const trials = 1000000;
for (let i = 0; i < trials; i++) {
    if (Math.random() < 0.3) count++;
}
console.log(`实际概率: ${(count / trials * 100).toFixed(2)}%`);

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

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…

js 实现全选

js 实现全选

实现全选功能的方法 使用 JavaScript 实现全选功能通常需要操作复选框(checkbox)的状态。以下是几种常见的实现方式。 通过 DOM 操作实现全选 // 获取全选复选框和子复选框 co…

js 实现文件上传

js 实现文件上传

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。以下是一个基础示例: <input ty…