一种基于抽牌模式的在线实时抽奖系统与方法与流程

文档序号:27426625发布日期:2021-11-17 20:29阅读:256来源:国知局
一种基于抽牌模式的在线实时抽奖系统与方法与流程

1.本发明涉及互联网技术领域,尤其涉及一种基于抽牌模式的线上实时抽奖系统。
2.

背景技术:

3.随机抽奖是当前非常流行的一种商业营销手段。通过骰子、转盘等传统抽奖方法成本高、效率低、只能用于线下活动,互联网时代产生了使用计算机程序生成中奖号码的在线抽奖方法。在线抽奖需要一种非常高效的大批量随机数生成方法,目前大部分在线抽奖方法是利用伪随机数生成程序生成随机数,根据随机确定中奖号码,计算机伪随机生成程序可以高效生成大量随机数,但伪随机数是根据一定的数学方法产生的,存在可预测、周期性等问题,用于在线抽奖安全性低。通过真随机数生成器通过收集各种自然物理随机现象生成的真随机数据可以避免伪随机数的缺点,但存在生产成本高、产出效率低、生产和使用过程复杂的缺点,无法满足在线实时抽奖的对随机数生产效率和成本的要求。
4.

技术实现要素:

5.针对现有在线抽奖方法存在的问题,本发明采用类似扑克牌抽牌的模式提供了一种低成本、高效、安全的在线实时抽奖系统与方法,本系统通过结合计算机硬件实时状态数据和软件生成的抽奖号码数据产生随机中奖号码。抽奖系统由用户抽奖模块,抽奖请求监控模块和中奖号码生成模块三部分组成,用户通过抽奖模块参与抽奖,中奖号码生成模块负责产生中奖号码,抽奖请求监控模块负责监控用户抽奖模块的产生的抽奖请求,启动中奖号码生成模块,根据中奖号码生成模块产生的中奖号码确定用户是否中奖,通知抽奖模块中奖结果。系统抽奖时,用户通过抽奖模块选择抽奖号码,参与抽奖,抽奖模块提交抽奖请求到抽奖请求监控模块的抽奖请求列队;抽奖请求监控模块监控到抽奖列队中有抽奖请求时,向中奖号码生成模块提交抽奖请求,中奖号码生成模块启动抽奖程序;中奖号码生成模块根据抽奖概率设置抽奖号码种类,生成抽奖号码原始表;中奖号码生成模块通过洗牌算法打乱抽奖号码原始表,产生抽奖号码随机排序表;中奖号码生成模块通过计算机硬件实时状态数据生成真随机抽奖间隔种子,根据真随机间隔种子产生带有真随机属性的抽奖间隔序列;中奖号码生成模块根据生成的抽奖间隔序列从抽奖号码随机排序表中抽出中奖号码,产生中奖号码序列,将中奖号码序列返回给抽奖请求监控模块;抽奖请求监控模块根据中奖号码序列确定用户是否中奖,将中奖结果返回给抽奖模块;抽奖模块根据中奖结果通知用户是否中奖,公布中奖结果。通过本系统抽奖产生的中奖号码兼具均匀分布、不可预测和非周期性的属性。本发明仅依据计算机本身固有功能直接生产随机数,生产成本低,效率高,可以用于在线实时抽奖的海量随机数生成。
6.1、本发明的提供的完整技术方案(发明方案):(1)用户选择抽奖号码参与抽奖
用户通过系统抽奖模块选择参与某一期的抽奖,选择抽奖的号码,可选的抽奖的号码为抽奖号码原始表中所有种类的号码,抽奖模块向抽奖请求监控模块提交抽奖请求,抽奖请求进入抽奖请求监控模块的抽奖请求列队。
7.(2)抽奖程序启动当抽奖系统监控到抽奖列队中有抽奖请求时,为所有抽奖请求向中奖号码生成模块提交抽奖请求,中奖号码生成模块收到请求后启动抽奖程序,为所有抽奖请求抽取中奖号码。
8.(3)抽奖号码原始表生成1)抽奖号码原始表中的抽奖号码和每个号码的数量根据中奖概率进行设置。比如抽奖号码可以设置为0、1,每个号码的数量可设定为万、十万、百万等等,构成不同数级的抽奖号码原始表。每个抽奖号码原始表中所包含的抽奖号码也可调整。最低可设定为2种,最高可设定和抽奖号码原始表的号码数量相同的种类数。如抽奖号码原始表中的号码数量设定为100万:当抽奖号码种类为2种时,每个抽奖号码的数量设定为50万,每种随机数出现概率为二分之一;抽奖号码种类为10种时,每种抽奖号码的数量设定为10万,每种抽奖号码出现概率为十分之一;抽奖号码种类最大设定为100万时,每种中奖号码的数量设定为1,每种随机数的出现概率为百万分之一。抽奖号码种类每增加一种,每种的出现概率随之相应下降。此外,抽奖号码原始表中的抽奖号码数量越多,抽奖号码的短期中奖概率偏离率越大。
9.2)每种抽奖号码的中奖概率可以设置为相等,也可以设置为接近,可以根据需要调整。如抽奖号码种类为2种(1和2)、数组长度为1万:假定每种抽奖号码中奖概率设定相等,可设定1有5000个和2有5000个;在不等情况下、可设定1有4900个和2有5100个,等等,可以根据不同需要自定义设定。在相等情况下、如果抽奖号码数量除不尽抽奖号码种类、则去掉除不尽的尾数,如抽奖号码种类为3个(1、2、3),每个抽奖号码数量均为3333个,抽奖号码原始表的号码总数为9999个,去掉1个尾数。据此类推。
10.3)中奖号码生成模块根据抽奖号码的中奖概率和不同号码中奖概率的设置情况,自动生成n个抽奖号码,n的数量一般情况设置为100万,不同号码中奖概率不等情况下,中奖号码生成模块需要定期自动调整不同号码的数量,使每种抽奖号码的中奖概率上下均匀波动,从而使每种中奖号的平均概率相等,调整周期可以设置为1天或1周。
11.(4)抽奖号码随机排序表生成1)抽奖号码排序表是由抽奖号码原始表中所有抽奖号码的不同排列组合变化形成。
12.2)抽奖号码原始表可生的不同中奖号码排序表数量由抽奖号码原始表的中奖号码数量和中奖号码种类确定。中奖号码种类数量等于抽奖号码原始表中的中奖号码数量时可生成最多的中奖号码排序表,在此情况下,不同随机中奖号码排序表的总数量为数组长度的阶乘。随机数种类只有2种时可生成的中奖号码排序表最少为,在此情况下,不同随机中奖号码排序表的总数量为(数组长度的阶乘) 除以 (二分之一数组长度的阶乘) 除以 (二分之一数组长度的阶乘) 。
13.3)中奖号码生成模块通过洗牌算法(如fisher

yates shuffle算法)随机打乱抽奖号码原始表中的号码次序产生抽奖号码随机排序表。
14.(5)基于计算机硬件状态数据的真随机抽奖间隔种子生成
中奖号码生成模块利用计算机系统功能获取计算机时间、cpu使用率和内存使用率组成字符序列,字符序列总共由51位数字构成,前17位为计算机时间数据,18到34位为计算机cpu使用率百分比数据,35到51位为计算机内存使用率百分比数据,使用洗牌算法随机打乱次序后再用md5转换成16位十六进制,再转换成十进制的数字,此十进制的数字即为抽奖间隔真随机种子。
15.(6)抽奖间隔序列生成1)中奖号码生成模块利用抽奖间隔真随机种子生成一个长度和抽奖请求数量相等的抽奖间隔序列。
16.2)抽奖间隔真随机种子位数为n,抽奖请求数量为m时,中奖号码生成模块利用伪随机算法生成m个介于1到n之间的正整数随机数,每个随机数代表抽奖间隔真随机种子的位置,根据m个随机数依次复制抽奖间隔真随机种子中对应位置的数字组成一个m个数的真随机间隔数序列。
17.3)抽奖间隔序列中的每一位数字代表抽取中奖号码时相邻两次抽取位置的间隔。如数字2代表当前抽取的号码位置与前一次抽取的号码位置中间隔了2个号码。
18.(7)中奖号码序列生成1)中奖号码生成模块根据间隔数序列依次为每个抽奖请求从抽奖号码随机排序表抽出中奖号码组成中奖号码序列,2)如抽奖号码只有0,1两种,排序表中的号码序列为1,0,1,1,0,1,0,1,0,1,1,0。抽奖间隔序列为1,3,2,1。则中奖号码为第2,6,9,11位号码,即中奖号码序列为0,1,0,1。
19.3)中奖号码生成模块生成中奖号码序列后,将结果返回给抽奖请求监控模块。
20.(8)确定中奖结果抽奖请求监控模块根据中奖号码序列确定每个抽奖请求的中奖号码,根据中奖号码确定用户是否中奖,将结果返回给用户抽奖模块。用户抽奖模块根据中奖结果通知用户是否中奖,公布中奖结果。
21.(9)本方法生产的中奖号码具有的特性本方法所生产的中奖号码具有以下特征:均匀分布性、不可预测性、非周期性。
22.1)均匀分布性抽奖号码原始表的每个号码数量有均匀性,利用抽奖号码原始表生产的抽奖号码排序表中的抽奖号码具有均匀分布性。根据真随机的计算器硬件状态数据从一个本身具有均匀分布性质的抽奖号码排序表进行抽取,其抽取的结果所组成的数列必然具有同样的均匀分布性。真随机数本身是否具有均匀分布性不影响抽取结果的均匀分布性。
23.2)不可预测性由于本方法生产中奖号码的之间没有任何基于算法的必然逻辑关系,中奖号码抽取位置与实时的计算机硬件状态数据有关,在抽取前无法预测,因此本方法生产的中奖号码和任何真随机数一样,是无法预测的。
24.3)非周期性从抽奖号码原始表设定的结构看,其不同数组长度,不同随数机种类,不同的随机数种类与数组的比例,其任一变量发生变化都会生成一个不同的抽奖号码原始表,每种抽奖号码原始表可生成天文级的不同排列组合,因此抽奖号码随机排序表的数量趋于无限,
具有非周期性。即时变化的计算机硬件状态真随机数据具有非周期性的自然物理客观属性。计算机硬件状态真随机数据与抽奖号码随机排序表叠加生产中奖号码,其产生的中奖号码具有非周期性。
25.2、本发明技术方案带来的有益效果:本发明解决了在线实时抽奖的真随机和安全性难题,低成本高效生成均匀分布的随机中奖号码,为线上无限量方便地生产和供应真随机数用于及时大量抽奖提供了有效的技术解决方案。由于使用本生产方法可以在任何普通计算机上无须作任何功能添加和改造均可方便有效地生产真随机数,和其它抽奖方法相比,本方法无论在生产、管理和使用上都具有强大的低成本经济优势。
附图说明
26.图1为根据本发明的一种抽牌模式的在线实时抽奖系统与方法的系统结构图。
27.图2为根据本发明的一种抽牌模式的在线实时抽奖系统与方法的主要流程图。
具体实施方式
28.如图1所示,根据本发明的一种抽牌模式的在线实时抽奖系统与方法的系统结构图。用户发出抽奖请求,系统生成中奖号码序列,与用户抽奖号码作对比,再返回用户中奖结果。
29.如图2所示,根据本发明的一种抽牌模式的在线实时抽奖系统与方法的主要流程图。下面以百万数组、十个随机数、同等概率的伪随机抽奖号码原始表为例(以下简称百万伪随机抽奖号码原始表),介绍本生产方法的生产步骤和流程。
30.(1)假如当前10个用户通过抽奖模块选择了抽奖号码参与抽奖,抽奖模块发送10个抽奖请求至抽奖监控模块。
31.(2)抽奖监控模块收到抽奖请求后启动中奖号码生成模块。
32.(3)中奖号码生成模块使用计算机伪随机算法生成百万数级伪随机抽奖号码原始表,0表示10。
33.a、抽奖号码原始表长度:100万个。
34.b、抽奖号码种类10个:即1、2、3、4、5、6、7、8、9、0,十种可能性。
35.c、每种抽奖号码出现的概率相同:均为10%,即每种抽奖号码均设定有10万个数。
36.(4)中奖号码生成模块将抽奖号码原始表转换成抽奖号码随机排序表。
37.a、通过洗牌算法shuffle打乱抽奖号码原始表的次序,生成抽奖号码随机排序表。
38.b、百万中奖号码排序表是百万伪随机中奖号码的一种静态序列表,是百万伪随机抽奖号码原始表产生的众多序列表中的一个。
39.c、百万伪随机抽奖号码原始表可生成总数为100万阶乘除以 (10万阶乘的10次方)的不同组合的中奖号码排序表。
40.(5)中奖号码生成模块使用计算机硬件三种即时数据生成抽奖间隔真随机种子。
41.用“内存利用率+cpu利用率+时间信息”51个自然数组成字符序列,使用洗牌算法shuffle随机打乱次序后再用md5算法转换成16位十六进制,再转换成十进制的数字,此十进制的数字即为真随机种子。中奖号码生成模块每次生成抽奖间隔真随机种子时都是利用
硬件的即时数据而产生,硬件即时数据所具有的不可预测性决定了由此产生的中奖号码也同样具有不可预测的客观属性。
42.举例说明:时间信息:20210501110851324;cpu利用率:29.354628576093881;内存利用率:10.133572678420579;组成的字符序列:202105011108513242935462857609388110133572678420579;随机打乱次序后的字符序列:511020836122298036448175392021123641738709505057158;md5值:df6a3b7ca9370cba;转换成十进制数:16098745224590199994。
43.(6)中奖号码生成模块通过抽奖间隔真随机种子产生抽奖间隔序列。
44.a、中奖号码生成模块利用伪随机算法生成正整数随机数,根据随机数依次复制抽奖间隔真随机种子中对应位置的数字组成一个长度等于请求数的真随机间隔数序列。
45.b、假如抽奖监控模块收到的抽奖请求数为10,中奖号码生成模块需要利用抽奖间隔真随机种子生成一个长度为10的抽奖间隔序列。
46.举例说明:抽奖间隔真随机种子“16098745224590199994”位数为20,抽奖请求数量为10时;伪随机生成介于1至20的10个随机数:1,2,14,5,6,9,5,3,18,10;生成真随机抽奖间隔序列:1,6,0,8,7,2,8,0,9,2。
47.(7)中奖号码生成模块通过抽奖间隔序列和抽奖号码随机排序表来抽取号码。
48.根据抽奖间隔序列,从抽奖号码随机排序表中一次抽取中奖号码,组成中奖号码序列。
49.举例说明:抽奖号码随机排序表:0003679595283817988824512403057919403770351758196661295276836652750529339934286924841950629084941396...;生成真随机抽奖间隔序列:1,6,0,8,7,2,8,0,9,2;中奖号码序列:0,9,8,0,3,0,6,3,9,9。
50.(8)中奖结果抽奖模块根据中奖号码序列来确定10个用户是否中奖,最终产生中奖结果。
51.本文中所描述的具体实施例仅用以说明本发明的技术方案而非限制,本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不应偏离本发明技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1