关于抽奖概率

实现一个在线抽奖系统,就算是个小白看了也能做出来(附源码) 1、数据库设计: 业务上一对一 设置表:拓展业务 ,一个用户进来设置,当多个用户进来设置的时候(多个用户属于同一公司),如果是只有用户表的话,及无法支撑业务,用户表关联学校,设置表在关联学校 tool:mybatias数据库的生成工具 ... 阅读详情

关于抽奖概率

最近做一个抽奖系统,对现在已经有的抽奖系统关于概率的这个东西进行了一些了解。于是想想针对这样的一些抽奖概率作为一些说明:

首先我们来说说比较常见的随机概率:

这就好像我们说的,我有一百个乒乓,其中一个是红色。然后把这些放到一个盒子里面,然后你在进行摸。当你摸完一次以后,在把你摸到的乒乓放回到盒子里面,在进行摸。这些,你每次摸中红色球的概率都是1/100。于是这样就产生的一个问题,我们对奖品会变得不可控制。如果一个运气好,很有可能机会造成奖品还不够发送。如果运气不好,这些奖品永远都可能留在那里。

 

于是根据这种问题,又有一种方法,每一次我们摸中的球,不放回回去了。于是概率也就变成:1/100,1/99,1/98……。这样也就控制了中奖的人数。但是这样又会出现一个问题:作为开奖人我对抽奖时间是不可控的。很多商家希望的是我在每个时间段能发送相应的奖品回去,这样更能提高抽奖的热度。如果一个奖品很快我就发送出去了,后面来的人会很失望。

于是根据这个问题,又出现了一种方法。如果我们把奖品放到抽奖的数量上面去,那不就可以控制抽奖的时间和中奖的人数了。如果100次抽奖中,我想每隔10次就有一个中奖,于是,我就随机把中奖的机会放到5,16,21…..这样的抽奖次数去。这样我就能控制抽奖人的那种心情。能把更多的人留在我这里进行抽奖。

现在我们来说说关于数据库设计:

列名

类型

说明

id

int

ID 自动增长列

OpporName

varchar(30)

设置的抽奖的名称(方面区分)

PrizeID

int

奖品ID

PrizeName

varchar(255)

奖品名称

PrizeNumber

int

奖品数量

OPNumberList

varchar(2000)

数量序列号

PTNum

int

已经抽中的数量

BeginDate

datetime

适用的开始时间

EndDate

datetime

适用的结束时间

ForeNumber

int

在前多少位里面进行选取

AreaID

varchar(20)

地区编号

UserID

varchar(30)

指定用户中奖

NowNumber

int

现在进行抽奖的人数

OrderID

int

奖品优先率

LotteryExp

datetime

领奖的有效时间

OneMaxPriz

int

每次中奖发放的奖品数量

states

int

状态

 

然后我们来说说相关的设计思路:

Id:不做说明

OpporName:主要是为了区分,例如针对一个奖品我还要进行时间段的区分。所以当设置的奖品多的时候,就不方便区分了。

PrizeID:奖品ID。

PrizeName:奖品名称。

PrizeNumber:奖品数量。(方便概率的计算,和奖品的统计。同时如果我对一个设置追加奖品的时候,能更好的使用)

OPNumberList:中奖的次数列表。这个是为了把奖品设置到每次抽奖的次数上面去,如果数量不是很大,就用varchar类型。

PTNum:已经抽中的数量,这个也是方便,如果追加奖品能进行计算。同时可以计算奖品的剩余数量。

BeginDate:此抽奖概率适用开始时间。

EndDate:此抽奖概率适用结束时间。

ForeNumber:此次抽奖在前多少次抽奖里面进行选取。因为对于抽奖我们本身对某一时段的抽奖人数是不能拿确认的。一个小时里面,他有可能有100个人,或者有200个人。于是我们设置概率也就不能确认在多少,于是我们选择了在某个时段,前多少次抽奖里面进行选取。例如我在2-3点之间,一般来的人为100-500个人,如果当天来的人只有100个,那么我设置到102这样的次数上面,肯定奖品就只有轮空了。如果我们前100个人之间选,那么我的奖品肯定会配送出去的。

AreaID:适于于那些地区。

UserID:我指定抽中的为某个人。这个是为了某些公司有自己的托而进行的设置。

NowNumber:现在抽奖的次数。

OrderID:奖品的概率排序。如果我有多个奖品在一个时间进行了覆盖。我肯定要设置优先把那些奖品分配出去。

LotteryExp:领奖的有效时间。

OneMaxPriz:每次奖品中奖发放的数量。如果我们每次中奖给2张点卡,等等。

States:状态。概率状态。

 

使用 Java 实现指定概率的抽奖 一提到抽奖,很多人就会联想到随机数这个东西。是的没错,那么怎么样既能实现随机的抽奖,又可以人为的控制每个奖品的概率呢?往下看。 阅读详情

相关推荐

设计高并发下的抽奖系统

否则,它会尝试获取一个可用的奖品,并创建抽奖记录。抽奖系统是一种常见的应用场景,它需要处理大量的并发请求,确保公平性和高效性。在本文中,我们将探讨如何设计一个高并发下的抽奖系统,并使用PHP编写相应的源代码。综上所述,设计高并发下的抽奖系统需要考虑数据库设计、并发控制、并发请求限制和安全性等因素。通过合理的设计和实现,可以确保抽奖系统的公平性、高效性和安全性。以上是一个简单的抽奖系统设计示例,仅供参考。希望这些信息对你有所帮助!每个用户的请求数都会被计数,并在1秒后过期。如果超过每秒的请求数限制,则返回。

XtAbap的博客 675

java 传入抽奖概率 0~100(包含小数)设计奖池,返回抽奖结果

工具类拿去用吧 可以根据实际情况和需求进行修改 import java.math.BigDecimal; import java.util.ArrayList; import java.util.BitSet; import java.util.List; public class LuckyMachineUtil { private static List<Integer> stringT=new ArrayList<>(); priv

c_molione的博客 877

概率抽奖算法实现:从刮刮卡到轮盘抽奖

本文还有配套的精品资源,点击获取 简介:本项目名为“概率抽奖算法Demo”,聚焦于为刮刮卡和轮盘类抽奖场景设计算法。该算法确保了公平性和随机性,通过精确的概率分配和随机数生成来决定中奖结果,同时优化算法效率,提高用户体验。开发者可根据源代码深入理解实现细节,并根据业务需求调整和扩展算法。 1. 概率抽奖算法原理与实践 在当今数字化时代,概率抽奖算法已成为众多...

weixin_32306683的博客 3151

抽奖系统数据库设计

首先我们来说说比较常见的随机概率: 这就好像我们说的,我有一百个乒乓,其中一个是红色。然后把这些放到一个盒子里面,然后你在进行摸。当你摸完一次以后,在把你摸到的乒乓放回到盒子里面,在进行摸。这些,你每次摸中红色球的概率都是1/100。于是这样就产生的一个问题,我们对奖品会变得不可控制。如果一个运气好,很有可能机会造成奖品还不够发送。如果运气不好,这些奖品永远都可能留在那里。   于是根据

liujn347的专栏 1万+

基于Access数据库抽奖系统设计

本文介绍了抽奖信息管理系统的设计思路和基本原理,结合Access,通过软件系统开发,实现了具有随机性和相对均衡性的抽奖。

Type-c超声波切割刀

接下来,我将提供Type-C超声波切割刀项目的C代码实现示例,代码将按照上述分层架构和模块化设计进行组织。为了达到3000行以上的代码量,我将尽可能详细地实现各个模块的功能,并添加必要的注释和错误处理。通过采用分层架构和模块化设计,我们可以建立一个可靠、高效、可扩展的系统平台,为产品的成功奠定坚实的基础。实际项目中,需要更详细的硬件驱动、更完善的功能模块、更严格的测试验证和更周全的维护升级计划。针对Type-C超声波切割刀这个项目,我将从以下几个方面详细阐述最适合的代码设计架构,并提供具体的C代码实现。

lianmengde的博客 1189

python 抽奖概率

代码: # -*- coding: utf-8 -*- import random # 抽奖概率(可设置) randomList = [] # 奖项 10个 gift = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # 设置礼品和抽奖百分比概率 r = [{'giftIndex': 0, 'value': 1}, {'giftIndex': 1, 'value'...

只有想不到,没有做不到 4733

动态规划法:n*m方格前进问题

在一个n*m的方格中,m为奇数,放置有n*m个数,方格中间的下方有一人,此人可按照正前方相临的五个方向(方格)前进但不能越出方格。人每走过一个方格必须取此方格中的数。要求找到一条从底到顶的路径,使其数相加之和为最大。输出和的最大值。 算法设计: 可以使用动态规划方法,从顶部开始,将第二排的每个数加上顶部第一排的最优解,将6排的问题缩小为5排的问题,然后重复该操作,直到底部最后一排,此时

Winifred_1997的博客 4675

根据概率抽奖算法

1、奖项以及中奖概率设置 奖项数量如下(不同的奖项可以是相同的奖不影响结算的结果): 奖项一:100 奖项二:100 奖项三:100 奖项四:200 奖项五:500 设置总的中奖的概率为10%,不中奖的概率为90%, 抽奖的算法核心:现有一万个球,球的编号是1-10000,其中数字1-1000范围内的球代表的为中奖(1万乘以10%=1000 范围刚好是1-1000),1001-10000范围内的球不中奖(1万乘以90%=9000 范围刚好1001-10000),每次抽奖抽中的数字有两种可能:

qq_16553883的博客 1万+

OpenCV图像拼接实战:用SIFT+透视变换打造无缝全景图(附完整代码)

本文详细介绍了使用OpenCV和SIFT算法实现图像拼接的全过程,包括特征匹配、透视变换和高级融合技术。通过实战代码演示,帮助开发者掌握无缝全景图生成的核心技术,适用于旅行摄影、无人机航拍等多种场景。

eee77的博客 997

树莓派CSI/DSI二合一接口深度玩法:同时驱动MIPI摄像头和屏幕的配置秘籍

本文详细解析了树莓派5上CSI/DSI二合一接口的深度玩法,提供了同时驱动MIPI摄像头和屏幕的完整配置秘籍。从硬件连接到软件设置,包括config.txt的优化配置,帮助用户充分利用树莓派5的双多功能接口,实现高效的双设备工作模式。

weixin_30687051的博客 573

python抽奖概率设计_python 抽奖概率

代码:# -*- coding: utf-8 -*-import random# 抽奖概率(可设置)randomList = []# 奖项 10个gift = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]# 设置礼品和抽奖百分比概率r = [{'giftIndex': 0, 'value': 1},{'giftIndex': 1, 'value': 1},{'giftIndex':...

weixin_36040020的博客 2622

关于光耦隔离与SP3485E芯片一起使用无法拉高485使能引脚问题

最近在做的一个项目,定制了一块STM32F407ZG的工控板,工控板载4个485接口全部都是只能接收数据,不能对外发送数据。1.接线不正确:接线不正确导致485收发出现问题。 2.程序端口初始化问题:控制光耦隔离的输入脚IO的初始化和置位状态有问题。 3.GPIO复用问题:控制对应串口的GPIO不是正点原子默认的GPIO,而是经过复用的其他IO,复用问题。 4.程序设置与485E芯片收发模式不对应:对于使能引脚的电平要根据光耦的输出情况确定输入IO与RE的关系,可能模式没有对应。 5.光耦隔离或者SP485

weixin_45862642的博客 2978

抽奖代码及概率

```java package cn.tedu.cy; import java.util.Random; import java.util.Scanner; public class demo4 { public static void main(String[] args) { // TODO Auto-generated method stub //模拟游戏中奖 java.u...

qq_44789987的博客 1617

【PyGIS】ERA5降雨蒸散发数据预处理

ERA5-LAND降雨蒸散发数据预处理

```On Earth, Be Water, By Coding``` 3144

【云原生进阶之容器】第六章容器网络6.6.2--Cilium部署

部署Cilium非常简单,可以通过单独的yaml文件部署全部组件(目前我使用了这个方式部署了1.7.1版本),也可以通过Helm Chart一键完成。重要的是部署环境和时机:官方建议所有部署节点都使用Linux最新稳定内核版本,这样所有的功能都能启用。作为一个Kubernetes网络组件,它应该在部署Kubernetes其他基础组件之后,才进行部署。

junbaozi的专栏 792

游戏抽奖概率模型

本文主要想罗列出游戏中常见的一些抽奖概率模型,并对其做简要的分析和讨论。 游戏的设计经常会有一些含有随机性质的抽奖设计。比如说卡牌抽奖、购买随机物品等等。它们都可以分为下面这两大类: 1、纯随机概率计算: 纯随机是指:随机结果不受外界影响并且随机的值一直没有变化。比如说大多数购买随机物品的情况。随机物品商店里面获得各种商品的几率都是一样的,不会因为你多次购买不中哪一件商品就会将...

higher2016的博客 2万+

Calibre:LVS 快速debug short/open技巧

用Fix Suggestion和Short Isolate两种方法debug LVS问题

m0_61544122的博客 7455

天天福利抽奖-JAVA概率抽奖

因业务需要,搞了个抽奖活动,中大奖中的简直爽歪歪???? 不过还是要偷偷告诉你:抽奖是有内幕的~~~(不能让领导看到,会被打????) 总在各种app上看到转盘抽奖,翻牌抽奖,每次抱着中最大奖的心,换来的都是未中奖的提示,可谓是竹篮打水一场空,屡战屡败,屡败屡战~ 现在就聊聊中奖的事,搬好小板凳排队做好了????‍♂️????????‍♂️????????‍♂️???????????????????????????????????????????????? 一、实现思路(这个应该不难理解吧~)

Sibylsf的博客 2384

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

php抽奖概率算法

做网站类的有时会弄个活动什么的,来让用户参加,既吸引用户注册,又提高网站的用户活跃度。同时参加的用户会获得一定的奖品,有100%中奖的,也有按一定概率中奖的,大的比如中个ipad、iphone5,小的中个Q币什么的。那么我们在程序里必然会设计到算法,即按照一定的概率让用户获得奖品。先来看两个概率算法函数。 算法一 /** * 全概率计算 * * @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4) * @return st

hechenhongbo的博客 1863

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java实现一个抽奖概率类

现实生活中,有时需要用概率返回

funcy的专栏 2万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

转盘抽奖概率算法的Java代码实现

最近的公司项目中遇到一个转盘抽奖的活动: 具体每次抽中每个红包的概率要求如下: 如何实现每次抽中某个红包的概率算法呢,假如是第三次抽奖:8元的概率为25,10元的概率为70,15元的概率为5, 实现代码如下: public static String weightRandom(Map<String, Integer> map) { Set<St...

jack_shuai的博客 6296

抽奖概率算法_java简单的抽奖算法,抽奖Demo

最近公司为促销会员充值,搞了一个充值抽奖活动。开发活动对抽奖的算法有些拙见,希望对大家有些帮助。也希望有更好算法的大神不吝赐教。1、理论:将100按最小单位分块,然后根据概率对小块进行分区。最后生成随机数,根据随机数的数值判断所在区域。例:奖品1:5%,奖品2:10%;奖品3:15%。则最小单位为1,将100分为100份;奖品1分区为0-5,奖品2分区为6-15,奖品3分区为16-30。然后我们生...

weixin_39761880的博客 2331

java抽奖概率抽奖

java实现概率抽奖

letterss的博客 4280

概率抽奖工具类(支持概率大于100抽奖)

package choujiang; import java.util.ArrayList; import java.util.List; import java.util.Random; /** * 抽奖工具类,概率和可以》1 概率为百分数*10000提高精确度,如10%*10000,则为1000(防止出现小数) 抽奖操作如下: * 1.输入抽奖概率集合,【抽奖概率集合为{10, 10,...

1864
上一篇: Hash Collision DoS
下一篇: 抽奖系统概率设计
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值