公开/公告号CN105760136A
专利类型发明专利
公开/公告日2016-07-13
原文格式PDF
申请/专利权人 江苏熟店宝科技有限公司;
申请/专利号CN201610075882.7
申请日2016-02-03
分类号G06F7/58(20060101);
代理机构北京酷爱智慧知识产权代理有限公司;
代理人马丽娜
地址 212001 江苏省镇江市中山东路33号龙发大厦18F
入库时间 2023-06-19 00:05:15
法律状态公告日
法律状态信息
法律状态
2023-01-13
专利实施许可合同备案的生效 IPC(主分类):G06F 7/58 专利申请号:2016100758827 专利号:ZL2016100758827 合同备案号:X2022980027177 让与人:江苏易润信息技术有限公司 受让人:江苏派智信息科技有限公司 发明名称:基于伪随机数的多维度可控方法 申请日:20160203 申请公布日:20160713 授权公告日:20190409 许可种类:普通许可 备案日期:20221228
专利实施许可合同备案的生效、变更及注销
2019-04-09
授权
授权
2019-01-04
专利申请权的转移 IPC(主分类):G06F7/58 登记生效日:20181214 变更前: 变更后: 申请日:20160203
专利申请权、专利权的转移
2018-09-28
专利申请权的转移 IPC(主分类):G06F7/58 登记生效日:20180907 变更前: 变更后: 申请日:20160203
专利申请权、专利权的转移
2016-08-10
实质审查的生效 IPC(主分类):G06F7/58 申请日:20160203
实质审查的生效
2016-07-13
公开
公开
查看全部
技术领域
本发明属于计算机信息技术领域,尤其涉及一种基于伪随机数的多维度可控 算法。
背景技术
在人们的日常生活中,各种生活现象存在着大量的随机性,随着计算机技术 的进一步发展和应用,计算机仿真技术在模拟我们日常生活事件随机性方面得到 大规模的应用,因而大多数的计算机语言都能够提供产生随机数的子程序、对象 或者函数,只是这些随机数并不是绝对随即产生的,而是通过数学计算方法计算 获得的一种伪随机数。
固定程序中通过计算机中的伪随机数生成方法,我们可以通过计算一定序列 的数值来应用于信息安全、博彩等领域。例如,在公告号为CN201210066971.7 公开专利技术方案中,公开了一种基于伪随机数的网上考试系统试卷选项均匀分 布方法,在该方法中通过输入试题合集Z、选项合集X、分布合集G、内容合集Y, 并放入合集T和S,进行不同数据合集的交叉计算,达到了选项随机分布的效果, 但是在整个计算过程中的集合,理论上均是数量固定的集合,因此得到的结果是 确定的,可以预见的,是无法施加变量的,从而存在应用领域单一,适应性差的 问题。再例如,在公告号为CN201110428803.3公开专利技术方案中公开了一种 伪随机数生成器及伪随机数生成方法,该方法中通过奇偶判断模块判断当前伪随 机数ai是奇数还是偶数,若为偶数,则将当前伪随机数送入平方处理模块,若 为奇数,则将当前伪随机数送入双曲处理模块,通过执行不同的数学计算方法来 达到产生随机数的目的。但通过此方法得到的随机数往往具有非常宽泛的周期 性,且如果在计算机中多次重复调用该方法,仍然避免不了严重占用计算机资源 的问题。
发明内容
本发明所要解决的技术问题在于,提供一种基于伪随机数的多维度可控算 法,用于克服现有随机算法或随机数生成方法中,计算过程不可浮动调控,计算 周期长,占用资源多等缺陷。
为了解决上述存在的问题,本发明提出了一种基于伪随机数的多维度可控算 法,该算法通过计算机模块实现,包括如下步骤:
步骤一,在服务器中设定基数数量N,概率数组ρi{ρ1、ρ2、ρ3……ρ i},数量数组λi{(λ1,Λ1)、(λ2,Λ2)、(λ3,Λ3)……(λi,Λi)}, 且每个抽取数量的值均对应一个ρi和λi中的值;
步骤二,将N中的值,根据其对应的ρi{}和λi{}中的值,以满足and(ρ i>0,λi>0)为规则进行暂存,获得初始化候选数组Ti{T1、T2、T3……Ti};
步骤三,对寄存器中的候选数组Ti中的每个数进行标记,生成标记数组 ti{t1、t2、t3……ti},且元素值默认为0;
步骤四,设定抽取次数M;
步骤五,以and(ρi>0,λi>0,ti=0)为规则更新候选数组Ti{},ρ=∑ρi, i=1、2、3、4……i;
步骤六,计算器在[1,ρ]之间随机计算生成一个随机整数K,M=M-1;如K ≤T1,则进入步骤七;否则进入步骤八;
步骤七,服务器标记ti=1,λi=λi-1,取与当前T1对应的Λi的值为最 终随机数;进入步骤九;
步骤八,去除Ti{}中的元素T1,更新Ti{},Ti={T1、T2、T3……Ti-1}, 更新ρ=∑ρi,返回步骤六;
步骤九,如M>0,则返回步骤五,否则结束算法。
上述算法,步骤一至步骤三为初始化步骤,步骤四至步骤九为执行步骤,即 该算法在同一计算机终端被多次调用时,从第二次被调用开始,步骤四为开始执 行步骤。
步骤一中的基数数量N概率数组ρi{},数量数组λi{}为预先设定。而步骤 四中的抽取次数为后期设定。
上述算法在被调用过程中,发生并发调用,并获得同一个最终随机数Λi, 且该Λi对应的λi<并发调用线程数,则服务器调用伪随机函数随机分配Λi, 未获得分配的线程返回步骤八。
上述算法中,同一线程调用算法步骤7生成的一个或多个随机数Λi另行保 存于寄存器中。
上述算法中,基数数量N为正整数,λi及M为自然数。
本发明提出的伪随机算法,通过在服务器中预先设定候选数据池来达到减少 计算步骤和重复初始化的目的,使得算法本身在受到计算机重复调用的过程中可 以减少相同且重复的步骤。并且,在随机数生成的过程中,与候选数据池中的元 素数据的对比有极大可能进一步减少算法计算步骤,获得结果。该算法在实际使 用过程中,能够大幅增加计算机的计算速度,是一种高效的伪随机数算法。
另外,该算法前置的抽取数量、概率数组、数量数组能够让用户简单的从多 维度提前设定计算范围,甚至内容,提高了算法的可控性,也从另一角度降低算 法的计算复杂度。
附图说明
图1为本发明的算法流程图。
图2为本发明算法步骤二中的判断规则逻辑图。
图3为本发明算法步骤五中的判断规则逻辑图。
具体实施方式
为了使本发明的技术方案更加清晰明了,下面结合附图对本发明的技术方案 内容、特点和效果做进一步说明:
实施例1:
在O2O的CS架构应用软件系统中,包含管理员、系统和用户3个角色, 分为用户终端、商家管理终端和服务器终端。
管理员经常通过商机管理终端发布一些抽奖活动来调动用户消费积极性,发 布的信息通常包括了奖项数量、奖项内容和奖项名额等信息,该信息上传并保存 于服务器终端。而用户通过预装在用户终端小游戏的得分情况,获得抽奖机会, 然后连接服务器终端进行抽奖行为。通过本发明提出的算法,该软件系统即可完 成上述一系列活动过程,步骤如下:
初始化步骤:
步骤一S01,商家通过管理终端设置一等奖为“现金券50元”、二等奖为“商 家积分200点”、三等奖为“谢谢惠顾!”3个奖项,每个奖项的获奖概率为ρi{ρ 1=1、ρ2=15、ρ3=50}、奖项名额及奖项内容其为λi{(λ1=1,Λ1=“现金券 50元”)、(λ2=2,Λ2=“商家积分200点”)、(λ3=3,Λ3=“谢谢惠顾!”)}; 一等奖对于的概率为ρ1,对应的奖项内容及奖项名额为(λ1,Λ1),以此类推;
步骤二S02,服务器终端将3个奖项,按照附图2所示逻辑S021,以and(ρ i>0,λi>0)暂存(即奖项对应的获奖概率大于0,奖项名额大于0),并按概率ρ i从小到大排序,得到系统初始化候选数组T={T1=1,T2=15,T3=50};
步骤三S03,服务器终端对寄存器中的候选数组T{}中的每个数进行标记, 生成标记数组t{t1、t2、t3},且t1、t2、t3默认值为0;
执行步骤:
步骤四S04,当第1个用户,参加用户终端小游戏游戏,获得M=2次的抽奖 机会,并开始抽奖,通过网络调用服务器计算机进行步骤五S05;
步骤五S05,服务器终端按照如图2所示逻辑S051,以and(ρi>0,λ i>0,ti=0)判断规则更新候选数组T{T1、T2、T3},并对相应的中奖概率ρ1、ρ 2、ρ3求和,得ρ=∑ρi=66;
步骤六S06,服务器终端通过计算机函数在[1,ρ]之间随机取1个整数K=17; 则不满足K小于等于T1的条件,执行步骤八S08;
步骤八S08,去除T{}中的元素T1,更新T{},T={T1=15、T2=50},更新ρ =∑ρi=65,返回步骤六S06;
假设此次在步骤六S06中取得随机整数K=11,满足K小于等于T1的条件, 执行步骤七S07;
步骤七S07,服务器终端标记t2=1,λ2=λ2-1=1,M=M-1=1,取与当前T1 对应的Λ2=“商家积分200点”的值为最终抽奖结果;
执行步骤五S05后,再次获得更新的T{T1=1、T3=50},ρ=51;
假设执行步骤六后,获得随机整数K=1,满足K小于等于T1的条件,执行 步骤七S07;
执行后t1=1,λ1=λ1-1=0,M=M-1=0;
即一等奖库存为0,二等奖库存为1,三等奖库存仍为3;
执行步骤九S09,如果M>0,重新执行步骤五;否则算法结束,服务器终端 向用户反馈抽奖获得奖项信息,用户终端显示中奖内容“恭喜您获得商家积分 200点”。
实施例2
由于智能终端的普及应用,该算法在进行调用时,往往会出现并发调用的情 况,例如:
在O2O的CS架构应用软件系统中,包含管理员、系统和用户3个角色, 分为用户终端、商家管理终端和服务器终端。用户终端和商家管理终端可以是移 动智能设备。
管理员通过商家管理终端,设定抽奖前置信息,执行初始化步骤;
如附图1所示:
初始化步骤;
步骤一S01,商家通过管理终端设置一等奖、二等奖、三等奖3个奖项,每 个奖项的获奖概率为ρi{ρ1=5、ρ2=25、ρ3=70}、奖项名额及奖项内容其为 λi{(λ1=10,Λ1)、(λ2=20,Λ2)、(λ3=30,Λ3)};一等奖对于的概率为 ρ1,对应的奖项内容及奖项名额为(λ1,Λ1),以此类推;
步骤二S02,服务器终端将3个奖项,按照图1所示逻辑,以and(ρi>0, λi>0)暂存(即奖项对应的获奖概率大于0,奖项名额大于0),并按概率ρi从 小到大排序,得到系统初始化候选数组T={T1=1,T2=15,T3=50};
步骤三S03,服务器终端对寄存器中的候选数组T{}中的每个数进行标记, 生成标记数组t{t1、t2、t3},且t1、t2、t3默认值为0;
在抽奖活动过程中,经过多人次的抽奖,服务器中现有的候选数组T{}中的 奖项库存为一等奖λ1=3,二等奖λ2=2,三等奖λ3=10;
假设在某一时间点上,有5名用户通过用户终端同时调用该抽奖算法,并且 有4名用户通过随机数匹配获得二等奖。由于是及时并发生成的结果,服务器中 的库存数据池来不及修订,造成了多名中奖者抢夺同一奖项的情况。
在此情况下,本发明提出的算法调用服务器自身的伪随机函数,在并发的4 名用户中,随机计算抽取2名获奖者,返回Λ值。其余2名用户,则直接跳入 步骤八(即未中奖)。
在实施例1和实施例2中,通过将算法计算步骤分类为初始化步骤、执行步 骤,算法前置初始化步骤只需要一次执行,就可多次调用。该抽奖算法可以向管 理员提供多维度控制接口,管理员可以设定奖项数、中奖概率、抽奖内容和预留 库存来控制该抽奖算法在抽奖过程中的计算复杂度和范围,由于设置了数据池范 围,计算机在生成随机抽奖数据时大大减少了抽奖步骤。特别是在步骤六中,通 过[1,ρ]抽取对比整数K,在很大概率上可以大大缩减对比计算步骤,从而降 低对服务器的资源占用,提高服务器计算效率。
而在实施例2中,只有当多用户并发调用,且经过算法计算生成的伪随机数 数量大于数据池数量时,服务器才调用自身的低效率伪随机算法,进行奖项分配。 此方法也能大幅降低服务器对随机函数的调用。
虽然本发明在具体实施方式中结合附图对本发明的优选实施例进行了描述, 但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性 的,并不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发 明宗旨和权利要求所保护的范围情况下,还可以作出很多形式的应用,这些应用 亦属于本发明的保护范围之内。
机译: 基于细胞自动的具有可控周期的伪随机数序列生成方法和装置
机译: 用于可编程,实时,多维度对象图形识别算法(OPRA)的方法和装置
机译: 用于可编程,实时,多维度目标模式识别算法(OPRA)的方法和装置