当前位置:首页 > 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
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现求导

js实现求导

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

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…