质量检测方法原理和标准

巨公摇号平台采用的质量检测标准为《美国随机数生成器国家标准NIST SP800-22》( 网址:https://csrc.nist.gov/Projects/Random-Bit-Generation/Documentation-and-Software)和《中国随机数生成器国家标准GB/T32915-2016》( 网址:https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=46D7E3E9C4B81DF460052FFEB706CAB0),采用的质量参考基准为ORACLE JDK1.8中的java.security.SecureRandom在Centos7操作系统运行时产生的随机数序列。

分钟级随机种子生成原理说明和检测方法

因为目前市面上没有对采用奖球生成的随机数进行直接检测的标准,所以我们需要将奖球生成的随机数转换成《美国随机数生成器国家标准NIST SP800-22》可以检测的二进制序列。我们需要注意12个奖球所有排列可能性479001600=12*11*10*9*8*7*6*5*4*3*2*1不能直接转换成28位(268435456)的二进制数——因为479001600-268435456=210566144导致有57869312(268435456-210566144)的28位的二进制低位分布明显偏少。我们可以将28位的二进制数降低到15位二进制数来减少二进制低位分布明显偏少的问题。我们将1号机和2号机的排列编号(排列编号计算工具可以在存证定时摇奖活动详情中找到)分别对32768(2的15次方)取模,然后将其余数转换成15位的二进制数,最后将两个15位长的二进制数拼接再加1得到1(含)至1073741824(含)之间的随机数。我们可以通过下面近300天的随机数数据和巨公摇号官网的视频教程进行随机数质量检测。近500日分钟级随机种子数据下载

毫秒级随机种子检测方法示例

第一步,我们可以采用ORACLE JDK1.8中的java.security.SecureRandom在Centos7操作系统运行时产生1个随机数(下称原始随机因子)。第二步,将原始随机因子以100000000为除数取余得出余数M,然后从散列随机数集合(文件公示地址:https://share.weiyun.com/7HcK5Pqu SM3:c2f1bcce8cad2c3588f31a62db124d79e3a50ca3a858ee7d6a24c13e1557fbf9)第M+1(含)行开始取1024个随机数(下称散列随机因子)。第三步,通过上述散列随机因子从1至16384按序排列号码中抽取1024个摇中序号(具体抽取算法可参考现场大屏抽奖摇号痕迹中的算法)。 第四步,将上述1024个摇中的每个编号转换成14位的二进制数并保存到随机数质量检测文件中。将上述四步重复7000次得出一个包含100352000个二进制数字的随机数质量检测文件。最后用《美国随机数生成器国家标准NIST SP800-22》中的检测程序对随机数质量检测文件进行检测并分析检测结果。本示例已将关键步骤进行了示范,读者可据此自行实现检测工具进行检测校验。如果您对于上述步骤或检测细节有任何疑问,欢迎您随时和我们沟通。

毫秒级随机种子简易检测示例

为了方便用户更加快速并直观的了解巨公摇号平台的摇奖质量,我们每日生成一份简易检测数据报告。巨公摇号平台每日执行10000次摇奖(每次从1至100的按序排列编号中抽取5名一等奖、10名二等奖、20名三等奖),然后计算1至100编号中每个号码中奖次数是否和按照中奖概率(一等奖5%、二等奖10%、三等奖20%)计算出来的次数是否接近。

摇奖日志 {{simpleTestData.day1DateStr}}摇奖日志下载 {{simpleTestData.day2DateStr}}摇奖日志下载
编号 中一等奖次数 中二等奖次数 中三等奖次数 中一等奖次数 中二等奖次数 中三等奖次数
{{item.no}} {{item.day1p1}} {{item.day1p2}} {{item.day1p3}} {{item.day2p1}} {{item.day2p2}} {{item.day2p3}}

分级随机种子分布统计

为了方便用户更加快速并直观的了解分级随机种子的随机分布情况。巨公摇号平台将最近(缓存10分钟)生成的10000条随机种子进行奇偶和10段区间分布统计。

奇数/偶数 479001600/10 479001600/10*2 479001600/10*3 479001600/10*4 479001600/10*5 479001600/10*6 479001600/10*7 479001600/10*8 479001600/10*9 479001600
{{minNumDatas.oddCount + '/' + minNumDatas.evenCount}} {{minNumDatas.area1}} {{minNumDatas.area2}} {{minNumDatas.area3}} {{minNumDatas.area4}} {{minNumDatas.area5}} {{minNumDatas.area6}} {{minNumDatas.area7}} {{minNumDatas.area8}} {{minNumDatas.area9}} {{minNumDatas.area10}}

巨公摇号周边相关工具

巨公摇号工具包可执行程序下载地址:https://share.weiyun.com/ykoGoZIi。工具的源代码包下载地址:https://share.weiyun.com/8SAbs3PK

----------------------巨公摇号工具包使用方法----------------------

命令:java -jar JugongTool.jar sm3 d://filePath.txt

说明:此命令用于计算指定路径文件的国密SM3算法摘要值

命令:java -jar JugongTool.jar sysRandom

说明:此命令用于在linux的根目录下生成600万长度的二进制序列真随机数文件(/root/sysRandom.txt用于美国NIST80022标准检测,/root/sysRandom.bin用于中国GB/T32915-2016标准检测)。注意需在linux上预先安装和打开rngd服务。生成的文件,检测结果用于和乒乓球生成序列检测结果进行对比。

命令:java -jar JugongTool.jar minRandom /root/minData-xxxx-xx-xx-xxxxxxxxxxx.txt

说明:此命令用于根据近300日奖球数据文件(minData-xxxx-xx-xx-xxxxxxxxxxx.txt,从巨公摇号官网质量检测模块下载)在linux的根目录下生成600万长度的二进制序列真随机数(/root/minRandom.txt用于美国NIST80022标准检测,/root/minRandom.bin用于中国GB/T32915-2016标准检测)。生成的文件用于NIST80022检测。

命令:java -jar JugongTool.jar minRandomHash /root/minData-xxxx-xx-xx-xxxxxxxxxxx.txt

说明:此命令用于根据近300日奖球数据文件(minData-xxxx-xx-xx-xxxxxxxxxxx.txt,从巨公摇号官网质量检测模块下载)中的近50日数据和散列表文件夹(/root/ppHashSmallFile/需从https://share.weiyun.com/4DeDyhgw下载解压)在linux的根目录下生成10亿长度的二进制序列真随机数(/root/minRandom.txt)。生成的文件用于美国NIST80022标准检测。

命令:java -jar JugongTool.jar ppStat minData-xxxx-xx-xx-xxxxxxxxxxx.txt

说明:此命令用于根据近300日奖球数据文件(minData-xxxx-xx-xx-xxxxxxxxxxx.txt,从巨公摇号官网质量检测模块下载)在linux的根目录下生成尾数分布、区间分布和球号分布3种统计数据文件(/root/ppStat.txt)。

中国GB/T32915-2016标准开源检测工具包(非官方,官方不提供免费开源检测工具包):https://github.com/dds2333/GM_nist_sts

客服微信二维码
Tel:4006913558