掌桥专利:专业的专利平台
掌桥专利
首页

一种线上抽奖方法及线上抽奖算法系统

文献发布时间:2023-06-19 11:08:20


一种线上抽奖方法及线上抽奖算法系统

技术领域

本发明涉及数据处理技术领域,尤其涉及一种线上抽奖方法及线上抽奖算法系统。

背景技术

抽奖作为一种营销的促进手段,越来越受到商家和用户的青睐。现有抽奖大多采用人工或电脑抽奖,人工抽奖的随机性差,抽奖过程不透明,因此抽奖结果可能被暗箱操作,因此可能存在不公平性。电脑抽奖由于抽奖算法可能被篡改或者被黑客恶意攻击,且抽奖机制无法透明化,因此其抽奖结果也可能存在不公平、不公在、随机性差的情况。

大多数的计算机语言都能够提供产生随机数的子程序、对象或者函数,只是这些随机数并不是绝对随即产生的,而是通过数学计算方法计算获得的一种伪随机数。现有随机数计算需要基于一套复杂的算法实现,随机数计算过程复杂、周期长,每计算一次随机数都需要调用一次随机数计算程序,严重占用计算机资源,而将现有随机数算法应用于抽奖中,则还需要等待随机数产生再进行抽奖算法运算,这大大影响了抽奖效率,对计算机系统的要求很高,并不能广泛应用。

发明专利CN201610075882.7公开了基于伪随机数的多维度可控方法,并具体公开了方法包括:步骤一,在服务器中设定基数数量N、概率数组ρx{ρ1、ρ2、ρ3……ρj}、数量数组λx{(λ1,Λ1)、(λ2,Λ2)、(λ3,Λ3)……(λj,Λj)},且每个抽取数量的值均对应一个ρx{ρ1、ρ2、ρ3……ρj}和λx{(λ1,Λ1)、(λ2,Λ2)、(λ3,Λ3)……(λj,Λj)}中的值;步骤二,将N中的值,根据其对应的ρx{ρ1、ρ2、ρ3……ρj}和λx{(λ1,Λ1)、(λ2,Λ2)、(λ3,Λ3)……(λj,Λj)}中的值,以满足and(ρi>0,λi>0)为规则进行暂存,i∈[1,j],获得初始化候选数组Tx{T1、T2、T3……Tj};步骤三,对寄存器中的候选数组Tx{T1、T2、T3……Tj}中的每个数进行标记,生成标记数组tx{t1、t2、t3……tj},且元素值默认为0;步骤四,设定抽取次数M;步骤五,以and(ρi>0,λi>0,ti=0)为规则更新候选数组Tx{T1、T2、T3……Tj},ρ=∑ρi,i∈[1,j];步骤六,计算器在[1,ρ]之间随机计算生成一个随机整数K,M=M-1;如K≤T1,则进入步骤七;否则进入步骤八;步骤七,服务器标记ti=1,λi=λi-1,取与当前T1对应的Λi的值为最终随机数;进入步骤九;步骤八,去除Tx{T1、T2、T3……Tj}中的元素T1,更新Tx={T1、T2、T3……Tj-1},更新ρ=∑ρi,i∈[1,j-1],返回步骤六;步骤九,如M>0,则返回步骤五,否则结束方法。该方法应用于服务器终端进行抽奖,该抽奖算法复杂。

发明专利CN201910509033.1 公开了一种应用区块链的随机抽奖方法,并具体公开了方法包括以下步骤:抽奖装置在区块链上发起一笔转账请求,所述转账请求包括:发起方地址、接收方地址以及转账金额;所述转账请求用做抽奖;所述抽奖装置对所述转账请求进行哈希运算,得到第一哈希值;所述抽奖装置获取其当前所对应的区块中的转账笔数n;以及将所述第一哈希值除以所述转账笔数n,得到对应的第一余数m;n为正整数,m为小于n的正整数;所述抽奖装置获取其当前所对应的区块中的第m笔转账,并对第m笔转账进行哈希运算,得到第二哈希值;以及将所述第二哈希值除以预设整数,得到对应的第二余数;所述第二余数为本次抽奖数;所述预设整数决定所述抽奖数的数值变化区间;所述第二哈希值为十六进制的数据;所述抽奖装置将所述第二哈希值除以预设整数,得到对应的第二余数,具体包括如下步骤:所述抽奖装置将所述第二哈希值转换成对应的十进制数据;所述抽奖装置将转换成十进制数据的第二哈希值除以预设整数,得到对应的第二余数。该方法基于区块链转账业务发起抽奖,抽奖的过程依赖区块链数据的哈希值,通过哈希运算本身存在随机性来提高抽奖过程的随机性。

发明内容

本发明针对现有技术存在的问题,提出了一种线上抽奖方法及线上抽奖算法系统,能解决现有抽奖算法不公正、透明的问题,同时抽奖算法简单,无需计算机多次重复调用获取随机数,提高了计算机资源利用率。

本发明是通过以下技术方案得以实现的:

一种线上抽奖方法,应用于线上抽奖算法系统,包括:

步骤S01,接收抽奖报名期间的用户抽奖报名请求,并基于用户抽奖报名请求生成用户身份标识;

步骤S02,对接收到的所有用户抽奖报名请求按照时间顺序进行排序,得到包含用户身份标识的报名集合;

步骤S03,采集指定工作日的上证指数作为抽奖随机数进行抽奖运算,抽奖运算如下:

将抽奖随机数乘以100得到抽奖随机值,利用字符串截取函数获得去除抽奖随机值左边第一位数字后的基数A;基数A平方运算得到中间数B;中间数B对用户抽奖报名请求总数N取余运算,得到抽奖编号R;

其中 ,所述指定日为抽奖报名截止后的日期;

步骤S04,确定报名集合中第R位的用户身份标识所对应的用户为中奖用户。

本发明报名截止后,用户数量以及报名的顺序就定了。系统根据算法和后来产生的上证指数就能计算出具体的中奖人是谁。本发明抽奖方法简单,算法逻辑透明,上证指数的无法操控性确保了抽奖的随机性。

上证指数计算方法采用派件加权综合价格指数公式计算,是一套固定的公式实时计算。上证指数的计算过程类似于伪随机数的计算过程,但本发明中上证指数并不是在线上抽奖算法系统上计算获取,而是直接采集获得,相比于现有伪随机数计算获取而言,本发明抽奖算法省去了随机数计算过程,通过获取随机数进行抽奖运算,简化了抽奖方法,并减少了计算机资源占用,提高了计算机抽奖运算效率,且抽奖结果公平、公正。

作为优选,所述步骤S01具体包括:

步骤S11,接收抽奖报名期间的用户抽奖报名请求,所述用户抽奖报名请求包括用户ID、报名时间、抽奖项目信息;

步骤S12,基于用户ID、报名时间、抽奖项目信息进行哈希计算,得到用户身份标识。

作为优选,用户ID、报名时间、抽奖项目信息与用户身份标识一一对应存储在算法系统中。

作为优选,所述指定工作日为抽奖报名截止日后的下一个工作日。

作为优选,方法还包括步骤S05:验证用户身份标识和中奖的用户身份标识,当一致时,该用户为中奖用户。

一种线上抽奖算法系统,包括:

请求接收模块,用于接收抽奖报名期间的用户抽奖报名请求,并基于用户抽奖报名请求生成用户身份标识;

报名统计模块,用于对接收到的所有用户抽奖报名请求按照时间顺序进行排序,得到包含用户身份标识的报名集合;

采集模块,用于采集指定工作日的上证指数并将其作为抽奖运算模块的随机数;

抽奖运算模块,用于将抽奖随机数乘以100得到抽奖随机值,利用字符串截取函数获得去除抽奖随机值左边第一位数字后的基数A;基数A平方运算得到中间数B;中间数B对用户抽奖报名请求总数N取余运算,得到抽奖编号R;其中 ,所述指定日为抽奖报名截止后的日期;

中奖确定模块,用于确定报名集合中第R位的用户身份标识所对应的用户为中奖用户。

作为优选,所述请求接收模块包括:

请求接收单元,用于接收抽奖报名期间的用户抽奖报名请求,所述用户抽奖报名请求包括用户ID、报名时间、抽奖项目信息;

请求处理单元,用于基于用户ID、报名时间、抽奖项目信息进行哈希计算,得到用户身份标识。

作为优选,系统还包括存储模块,用于存储用户ID、报名时间、抽奖项目信息、用户身份标识。

作为优选,系统还包括中奖验证模块,用于验证用户身份标识和中奖的用户身份标识,当一致时,该用户为中奖用户。

本发明具有以下有益效果:

一种线上抽奖方法及线上抽奖算法系统,抽奖算法简单,计算机资源利用率高,且具有不可控性、随机性,能确保抽奖结果公平、公正。

附图说明

图1为本发明一种线上抽奖方法的流程图;

图2为本发明一种线上抽奖算法系统的原理框图。

具体实施方式

以下是本发明的具体实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。

如图1,本发明一种线上抽奖方法,应用于线上平台的线上抽奖算法系统。方法包括:

步骤S01,接收抽奖报名期间的用户抽奖报名请求,并基于用户抽奖报名请求生成用户身份标识;

步骤S02,对接收到的所有用户抽奖报名请求按照时间顺序进行排序,得到包含用户身份标识的报名集合;

步骤S03,采集指定工作日的上证指数作为抽奖随机数进行抽奖运算,抽奖运算如下:

将抽奖随机数乘以100得到抽奖随机值,利用字符串截取函数获得去除抽奖随机值左边第一位数字后的基数A;基数A平方运算得到中间数B;

中间数B对用户抽奖报名请求总数N取余运算,得到抽奖编号R;

其中 ,所述指定日为抽奖报名截止后的日期;

步骤S04,确定报名集合中第R位的用户身份标识所对应的用户为中奖用户。

所述步骤S01具体包括:

步骤S11,接收抽奖报名期间的用户抽奖报名请求,所述用户抽奖报名请求包括用户ID、报名时间、抽奖项目信息;

步骤S12,基于用户ID、报名时间、抽奖项目信息进行哈希计算,得到用户身份标识。

针对每个用户抽奖报名请求采用此方法计算用户身份标识,每个用户都具有唯一的用户身份标识,能通过用户身份标识获得参与哪个抽奖项目的用户ID。所述用户身份标识生成后保存到线上抽奖算法系统内。具体地,用户ID、报名时间、抽奖项目信息与用户身份标识一一对应存储在算法系统中。

所述步骤S02,在抽奖报名截止后进行。由于用户抽奖报名请求包含有报名时间信息,即可根据报名时间对用户抽奖报名请求进行时间排序,如按照报名先后顺序进行升序排列,继而将排序后的信息构成报名集合,报名集合包括基于用户抽奖报名请求生成的用户身份标识,即报名集合为所有请求方的用户身份标识集合。所述用户身份标识集合在生成后也被存储于线上抽奖算法系统内。在抽奖报名截止后,统计用户抽奖报名请求数量,用于步骤S03计算。

所述步骤S03包括:

步骤S31,采集指定工作日的上证指数并将其存储于线上抽奖算法系统内;

步骤S32,将采集的上证指数作为抽奖随机数进行抽奖运算。

所述指定工作日为抽奖报名截止日后的工作日,优选地,所述指定工作日为抽奖报名截止日后的下一个工作日。由于上证指数当天也会发生变化,可具体确定到指定工作日某个时间的上证指数,在不确定具体时间时,默认为工作日收盘时的上证指数数据。

所述抽奖运算是基于抽奖随机数进行一些列运算实现。上证指数是无法操控与预测的随机数字。经过算法中的乘以100,然后再平方后得到的数字是一个完全随机的数值。此运算算法简单,抽奖运算效率高,能快速得到抽奖结果。尤其当线上平台进行多个抽奖项目抽奖时,多个抽奖运算可同时进行,占用计算资源少,抽奖运算效率高。并且,在抽奖截止日后,用户自己可以根据上证指数进行上述运算过程,进而验证抽奖结果的公正性。

所述步骤S04基于抽奖运算结果执行,当确定中奖的用户身份标识时,则对该用户身份标识所对应的用户确定为中奖用户。通过调用存储于线上抽奖算法系统中的数据,可从用户身份标识获得对应的用户ID,用户ID可以为用户注册ID或者用户路由地址ID。系统存储该中奖的用户身份标识,以便于后期验证兑奖用户,中奖用户向系统发起兑奖请求时,兑奖请求包含用户ID、报名时间、抽奖项目信息,系统再次对兑奖请求进行用户身份标识运算,将重新生成的用户身份标识与存储在系统内中奖的用户身份标识对比,继而验证通过兑奖请求,系统继续兑奖流程。

本发明方法还包括步骤S05:验证用户身份标识和中奖的用户身份标识,当一致时,该用户为中奖用户。基于用户的抽奖报名请求,采用步骤S12的计算方式重新计算用户身份标识,当重新计算的用户身份标识与中奖的用户身份标识一致时,即用户为中奖用户。

如图2,本发明一种线上抽奖算法系统包括请求接收模块、报名统计模块、采集模块、抽奖运算模块、中奖确定模块。请求接收模块,用于接收抽奖报名期间的用户抽奖报名请求,并基于用户抽奖报名请求生成用户身份标识。报名统计模块,用于对接收到的所有用户抽奖报名请求按照时间顺序进行排序,得到包含用户身份标识的报名集合。采集模块,用于采集指定工作日的上证指数并将其作为抽奖运算模块的随机数。抽奖运算模块,用于将抽奖随机数乘以100得到抽奖随机值,利用字符串截取函数获得去除抽奖随机值左边第一位数字后的基数A;基数A平方运算得到中间数B;中间数B对用户抽奖报名请求总数N取余运算,得到抽奖编号R;其中 ,所述指定日为抽奖报名截止后的日期。中奖确定模块,用于确定报名集合中第R位的用户身份标识所对应的用户为中奖用户。

所述请求接收模块包括请求接收单元、请求处理单元。所述请求接收单元,用于接收抽奖报名期间的用户抽奖报名请求,所述用户抽奖报名请求包括用户ID、报名时间、抽奖项目信息。所述请求处理单元,用于基于用户ID、报名时间、抽奖项目信息进行哈希计算,得到用户身份标识。

本发明系统还包括存储模块,用于存储用户ID、报名时间、抽奖项目信息、用户身份标识。

本发明系统还包括中奖验证模块,用于验证用户身份标识和中奖的用户身份标识,当一致时,该用户为中奖用户。基于用户的抽奖报名请求,重新计算用户身份标识,当重新计算的用户身份标识与中奖的用户身份标识一致时,即用户为中奖用户。

举例:抽奖报名期间,多个用户在线上发送报名请求给系统,报名成功后,用户获得一个报名序号,系统针对每个请求生成用户身份标识。抽奖活动截止,系统收到563个报名请求(N)。系统按照先后顺序排列用户身份标识,继而构成包括用户身份标识的报名集合G。每个用户获得的报名序号实际上为这个集合的索引值+1。报名截止日的下一个工作日上海证券所收盘行情:上证指数为3338.68。利用该上证指数进行抽奖运算。抽奖随机值为3338.68*100=333868,继而获得基数A为33868,对基数A进行平方得到中间数B为1147041424。之后进行取余计算,中间数B对报名请求数N进行取余,得到抽奖编号R为426。即中奖者就是拿到报名序号为R的用户。系统从报名集合G中第R位(索引R-1)获得用户身份标识。之后重新计算序号为R的用户的身份标识,进行比对。比对一致,抽奖成立,中奖者为R用户。

本领域的技术人员应理解,上述描述及附图中所示的本发明的实施例只作为举例而并不限制本发明。本发明的目的已经完整有效地实现。本发明的功能及结构原理已在实施例中展示和说明,在没有背离所述原理下,本发明的实施方式可以有任何变形或修改。

相关技术
  • 一种线上抽奖方法及线上抽奖算法系统
  • 一种基于GIS和互联网的即时场景线上抽奖系统
技术分类

06120112809105