本发明涉及摇号方式领域,特别涉及一种摇号方法。
背景技术:
1、追求公平是人类的天性。当资源不足或不均衡时,为了分配这些资源,人们往往借助于摇号,按摇号结果分配资源,以体现公平,减少冲突。为了在资源分配方面获得优势地位,人们总是想尽一切办法试图影响这些所谓的随机过程,使之出现自己希望的结果,这就是所谓的“作弊”。在各种摇号活动中,作弊屡见不鲜,技术上的根源是人们并没有找到一个可以不受人影响的真正的随机过程。
2、现有技术中,计算机软件技术的发展为此提供了新的希望,人们可以用软件方法产生一个非常接近真正的随机过程的一个伪随机过程,作为一种摇号方式。
3、但是,真正的随机过程在计算机中也不存在,依然存在作弊的可能性。而且由于计算机运算的复杂、高速、不可见等特点,软件摇号中的作弊更隐蔽、更大胆。
技术实现思路
1、本发明实施例提供一种摇号方法,可以解决现有技术中,存在计算机摇号过程中隐蔽作弊的问题。
2、本发明实施例提供一种摇号方法,包括摇号服务器执行以下步骤:
3、获取号民摇号所用的底码和底码哈希值;
4、获取一个或多个公证号民的底码和底码哈希值;
5、根据每个号民以及公证号民的个人id信息和底码哈希值形成报名表;所述报名表不包含底码,且为只读,生成后不再修改;
6、根据报名表,当号民的底码和底码哈希值一致时,则生成不包括公证号民的底码表;否则,删除不合格号民,并将公证号民的底码加入底码表;
7、对每个号民分配一个序号,将序号按顺序排列后生成候选号表,公布候选号表;并根据候选号表通过摇号计算方法进行摇号,摇号后公布底码表和摇号结果。
8、进一步地,所述号民的含义如下:
9、诚实号民:以实际得到资源为目的,没有作弊行为的号民;
10、作弊号民:以实际得到资源为目的,但有作弊行为的号民;
11、恶意号民:试图非法影响摇号过程的号民;
12、公证号民:其具有法定身份,保证作弊者不能通过获取全部数据影响摇号结果;
13、幽灵号民:其对应了一条摇号时的底码,是虚拟的号民。
14、进一步地,所述摇号的计算方法包括:
15、底码是多字节的,每个字节按二进制形式中1的个数转换为位;其中,偶数个1为0,奇数个1为1,1位为1列,每个号民的底码为1行,最终形成一个二维表作为底数位表;
16、摇号分多轮,每轮摇出一个号;每轮提取底数位表的1列或多列排列成一维表,其中,每次取一整列,用过的列不可重复使用,要使得此一维表的元素数大于等于2m,按摇号数的位数m折叠它;用折叠后的一维表逐位设置一个自然数作为摇号数;用摇号数除以候选号数,用余数作为序号,从候选号表中取出一个号,作为本轮摇出的号;m的选择要使得2^m-1远大于候选号数。
17、进一步地,所述摇号数有最大值限制;
18、设最大限制数为pm,摇号数为i,i=((2^m-1)/n)取整,pm=i*n-1;
19、其中,m为摇号数位数,n为候选号数。
20、进一步地,所述底码为一个长度不少于l的一个字节数组,所述l值的计算方式如下:
21、设号民数最少为r,选出号数为s,摇号轮数为2s;
22、每轮需要的列数为t,t=2m/r,并向上取整,即最小为1,其中m为摇号数位数;
23、最终,l值的计算公式为l=2st。
24、进一步地,所述底码表为二维表,分多行,一行表达一个号民的数据,每行包括如下字段:号民id、报名哈希值、底码。
25、进一步地,所述候选号表为一维表,需依次列出各个候选号。
26、本发明实施例提供一种摇号方法,与现有技术相比,其有益效果如下:
27、本发明的摇号计算方法是公开的,所有号民的底码最终也被公开,因此任何一个人都可以自行设计计算机软件工具实现这一算法。如果其计算机软件工具中计算方法与公布的计算方法相符,则摇号结果应与公布的一致;如不一致,必有一方计算机软件工具有问题。计算机软件工具设计者在软件中的任何作弊行为都会被发现。
28、对于摇号组织者,在报名阶段,摇号组织者看不到其他号民的底码,因此无法操纵恶意号民和幽灵号民提供特定的底码影响摇号结果。在亮底阶段,摇号组织者可以看到所有号民的底码,但无法修改任何号民的底码,包括其操作的恶意号民和幽灵号民的底码。
29、摇号组织者可以操纵恶意号民和幽灵号民不提供底码而影响摇号结果,但这将引起公证号民的介入,使最终结果朝向其无法控制的方向发展,则可杜绝摇号组织者作弊。对于一般号民,在选定自己的底码时,看不到其他号民的底码,无法选择对自己有利的底码。待其能看到其他号民底码时,自己的底码又不能修改。所以没有作弊机会。一般号民能作弊的情况就是不提供底码,但这只能影响摇号过程,无法达到自己的目的,能完全杜绝其作弊行为。对于公证号民,在实际应用中,可以通过多设公证号民,号民自发监督等方式杜绝公证号民作弊。
1.一种摇号方法,其特征在于,包括摇号服务器执行以下步骤:
2.如权利要求1所述的一种摇号方法,其特征在于,所述号民的含义如下:
3.如权利要求1所述的一种摇号方法,其特征在于,所述摇号的计算方法包括:
4.如权利要求3所述的一种摇号方法,其特征在于,所述摇号数有最大值限制;
5.如权利要求1所述的一种摇号方法,其特征在于,所述底码为一个长度不少于l的一个字节数组,所述l值的计算方式如下:
6.如权利要求1所述的一种摇号方法,其特征在于,所述底码表为二维表,分多行,一行表达一个号民的数据,每行包括如下字段:号民id、报名哈希值、底码。
7.如权利要求1所述的一种摇号方法,其特征在于,所述候选号表为一维表,需依次列出各个候选号。