概率计算(抽奖活动、命中率)

最近在做移动端的营销活动,其中包含刮刮卡、大转盘等小游戏,对于用户来说他们不关心Code只关心我是否中奖了,之前也在群里看到有人要概率的“算法”或者说是计算工具类。

ps:这里不得不提一下,每当自己在做什么东西的时候总会在一些地方发现相似的需求或者文章,来源有很多比如:cnblogs、QQ群等各种渠道,这不刚刚还有人发表随机数相关的文章,哈哈可能是我运气好。

营销活动核心——我是不是中奖了呢?

是不是中奖都有一个概率和巧合性那么肯定少不了随机数了,说到随机数各位Coder们肯定想到了Random这个类,是的这一次的概率计算的实现也是基于随机数的。

下面我们来看概率服务接口:

IProbabilityService

接口十分的简单一起有两个方法,第一个方法比较纯粹的计算概率,而第二个则添加了一些修正概率所需的数据。

 

为什么需要“getRandomNumber”参数,而不直接在内部使用Random?

这边就需要引入“随机数是骗人的,.Net、Java、C为我作证”今天的热乎文章了,内部使用Random有很多的不确定性,而且不易于扩展所以这边提供了一个委托提供随机数,而概率服务本身只专注于计算,如果非要高大上点就引入设计原则——单一职责

服务实现

ProbabilityService

代码有较详尽的注释这边不再说明了。

 

有运行Demo吗?

当然,这是我的一贯作风热烈的笑脸

运行结果

image

第一行为接口的第一个方法(纯粹的概率计算),第二个行为接口的第二个方法(带简单修正)。

Code

Program

Demo下载:http://pan.baidu.com/s/1gdmnH31

 

写在最后

已经写了一些“散文”做为锻炼,之后准备写一个系列挑战一下,不过最近在做项目,等手上的模块做完之后,开始着手针对 Orchard Framework 写一个刨析系列,当然中间可能会穿插一些小文章,喜欢Orchard的朋友们可以留个言留个脚印。



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,转载文章之后须在文章页面明显位置给出作者和原文连接,谢谢。
欢迎大家关注微信号。扫下面的二维码或者收藏下面的二维码关注吧(长按下面的二维码图片、并选择识别图中的二维码)
微信公众平台
posted @   KAnts  阅读(15872)  评论(7编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示