算法本身没问题,愿望也是美好的,然而真正具体应用时就出了大麻烦。这是由三个问题导致的:有选手缺席、迟到和抓错签。因此后面的比赛场次根本就无法进行。这样做的另外一个问题是只有安排者知道场次,选手只能干等,全程侯场,不能自主安排时间。这显然是由于我从来没有组织经验造成的。如此至少现场还应该有一台打印机,把比赛进程打印出来公示。
那么能否有简单的方法在报名结束时就做好公平的抽签呢?答案当然是肯定的。以下就是一个算法。
- 赛前公布若干随机数种子和分组抽签程序及使用方法。
- 抽签程序加密,hash,供下载。加密程序可以加两个小把戏,一是加盐,比如shuffle若干次,种子再加固定数等。另外文件也可以加一些盐,比如文件中可以加一个注释行,包含随机长度的随机字串。这样即使通用的算法或反复使用的程序,大家也不好通过 hash 码猜具体文件中是什么内容。
- 参赛选手按报名顺序公示。
- 登记报名者和提程序者需要是两个不同的人。
- 报名截止,投票选随机数种子。
- 运行程序,产生分组并公示。
没有评论:
发表评论