当前位置:首页 > JavaScript

js实现几率

2026-04-05 19:32:46JavaScript

在JavaScript中实现概率(几率)相关功能,通常涉及随机数生成、权重计算或概率分布。以下是几种常见实现方法:

基础随机概率

使用Math.random()生成0到1之间的随机数,与设定的概率阈值比较:

js实现几率

function checkProbability(probability) {
    return Math.random() < probability;
}
// 示例:50%概率返回true
const result = checkProbability(0.5);

加权随机选择

从数组中按权重随机选择元素:

js实现几率

function weightedRandom(items, weights) {
    const totalWeight = weights.reduce((acc, w) => acc + w, 0);
    const random = Math.random() * totalWeight;
    let weightSum = 0;

    for (let i = 0; i < items.length; i++) {
        weightSum += weights[i];
        if (random <= weightSum) return items[i];
    }
}
// 示例:A有70%概率,B有30%概率
const choice = weightedRandom(['A', 'B'], [0.7, 0.3]);

概率分布函数

实现正态分布(高斯分布)随机数:

function normalDistribution(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);
}
// 示例:生成均值为0,标准差为1的随机数
const gaussianValue = normalDistribution();

蒙特卡洛模拟

通过大量随机采样估算概率:

function monteCarloSimulation(trials, experiment) {
    let successes = 0;
    for (let i = 0; i < trials; i++) {
        if (experiment()) successes++;
    }
    return successes / trials;
}
// 示例:模拟硬币正面概率
const headsProbability = monteCarloSimulation(10000, () => Math.random() < 0.5);

注意事项

  • Math.random()不适合加密场景,需使用crypto.getRandomValues()替代
  • 浮点数比较可能存在精度问题,建议使用容差比较
  • 复杂概率模型可考虑使用概率库如probability.jsjstat

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

相关文章

js 实现分页

js 实现分页

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

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…