news 2026/4/13 16:06:05

概率与决策 - 模拟程序让你在选择中取胜

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
概率与决策 - 模拟程序让你在选择中取胜

为程序员,看着这种概率与决策,有时候常在想,我怎么做决策我的胜率概率最大,能不能用程序来模拟一下。我选择A赢的概率,我选择B赢的概率呢?

当然,必定是可以的,程序天然非常容易处理这些大数据,循环等问题,话不多说,直接看效果吧。

1

2

3

体验地址

github源码地址

死亡概率模拟器

核心算法采用了“几何分布逆变换采样”

O(1)时间复杂度,相比传统蒙特卡洛方法性能提升显著

数学准确性:基于几何分布的期望值 E[X] = 1/p

边界保护:处理 log(0) 等数学异常

calculateDeathTime() {

const p = this.selectedProbability.value;

const u = Math.random();

const u_safe = Math.max(u, 1e-10); // 避免log(0)

// 几何分布公式:X = ceil(log(U) / log(1-p))

const deathTime = Math.ceil(Math.log(u_safe) / Math.log(1 - p));

return Math.max(1, deathTime);

}

风险抉择抽奖

采用了预计算 + 进度动画分离。

计算与渲染分离:避免10000次抽奖时的性能问题

固定时长体验:无论多少次抽奖,用户等待时间可控

平滑进度显示:50ms更新间隔保证流畅动画

async startLottery() {

// 步骤1:预先快速计算所有结果(无延迟)

for (let i = 0; i < this.selectedTimes; i++) {

const result = this.performSingleLottery();

this.results.push(result);

}

// 步骤2:根据次数设置固定动画时长

let animationDuration = 0;

if (this.selectedTimes === 1) animationDuration = 0; // 立即

else if (this.selectedTimes === 10) animationDuration = 500; // 0.5s

else if (this.selectedTimes === 100) animationDuration = 1000; // 1s

else if (this.selectedTimes === 1000) animationDuration = 1500; // 1.5s

else if (this.selectedTimes === 10000) animationDuration = 2000; // 2s

// 步骤3:播放进度动画(仅更新显示)

const updateInterval = 50; // 每50ms更新一次

const totalSteps = animationDuration / updateInterval;

for (let step = 1; step <= totalSteps; step++) {

this.currentRound = Math.floor((step / totalSteps) * this.selectedTimes);

await this.sleep(updateInterval);

}

}

同时采用了真随机模拟 Math.random() 模拟概率,大数定律验证,次数越多越接近理论值

performSingleLottery() {

const random = Math.random(); // [0, 1)

if (random < 0.99) {

return { win: true, amount: 200000000 }; // 99%概率:2亿

} else {

return { win: false, amount: 0 }; // 1%概率:0元

}

}

最后

其实最后发觉,概率学到最后就是数学期望,一个人选择可能是随机,但100人、1w人、10w人选择就是必然的概率了。

一个人选择失败对整体影响有限,但对于他自身而言,可能是灾难性的,这也就是一个人在就是整个时代的一粒沙尘,对整个时代影响微乎其微。

但通过代码的计算我们也可以看出,一个人微乎其微,但如果你在你的前面加一个权重,那可能就不一样了,所以大家行动起来吧,让自己变得更强,那样,在选择中,你取胜的概率就会更大了,谢谢大家。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 5:46:12

如何用AI技术实现CT肺部智能分割?lungmask工具全解析

在医学影像分析领域&#xff0c;CT肺部自动分割一直是临床研究和诊断中的重要环节。传统的手工分割方法耗时费力&#xff0c;且易受主观因素影响。现在&#xff0c;通过lungmask这一开源工具&#xff0c;医学工作者能够轻松实现精准高效的肺部区域自动识别。 【免费下载链接】l…

作者头像 李华
网站建设 2026/4/10 23:53:41

5分钟掌握gsplat.js:浏览器端3D渲染新利器

5分钟掌握gsplat.js&#xff1a;浏览器端3D渲染新利器 【免费下载链接】gsplat.js JavaScript Gaussian Splatting library. 项目地址: https://gitcode.com/gh_mirrors/gs/gsplat.js 在当今Web开发领域&#xff0c;3D可视化需求日益增长&#xff0c;而传统的three.js虽…

作者头像 李华
网站建设 2026/4/11 21:29:45

开源游戏宝典:awesome-open-source-games项目完全指南

开源游戏宝典&#xff1a;awesome-open-source-games项目完全指南 【免费下载链接】awesome-open-source-games Collection of Games that have the source code available on GitHub 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-open-source-games &#x1f…

作者头像 李华
网站建设 2026/4/13 13:43:28

Gaia2 与 ARE:赋能社区的智能体评测

在理想情况下&#xff0c;AI 智能体应当是可靠的助手。当接收到任务时&#xff0c;它们能够轻松处理指令中的歧义&#xff0c;构建逐步执行的计划&#xff0c;正确识别所需资源&#xff0c;按计划执行而不被干扰&#xff0c;并在突发事件中灵活适应&#xff0c;同时保持准确性&…

作者头像 李华
网站建设 2026/4/11 15:32:30

【光照】Unity[光照烘焙]的原理与具体流程

URP光照烘焙介绍Unity通用渲染管线(URP)的光照烘焙系统是用于预计算全局光照(GI)的核心技术&#xff0c;它将静态光源的光照效果预先计算并存储在光照贴图(Lightmap)中&#xff0c;运行时直接采样使用以提高性能。URP支持三种光源模式&#xff1a;‌Realtime实时模式‌&#xf…

作者头像 李华
网站建设 2026/4/9 12:39:34

21、邮件配置中的重写规则与特殊 m4 配置详解

邮件配置中的重写规则与特殊 m4 配置详解 1. 重写规则理解 重写规则在邮件处理中起着核心作用,它主要用于匹配输入地址并根据特定模式进行重写。下面通过几个测试来详细说明其工作原理。 1.1 模板键值测试 模板使用 @ 加上 $2 的值作为键。例如,当键为 @imaginary.c…

作者头像 李华