作者AmosYang (泛用人型编码器)
看板GameDesign
标题Re: [游戏] 分享我们的自制游戏情报
时间Fri Oct 10 21:11:40 2014
※ 引述《AmosYang (泛用人型编码器)》之铭言:
: 推 cowbaying: 来帮忙想一下要怎麽抽奖比较实在 XDDD 10/09 17:11
方案一
: http://xkcd.com/221/ :D
方案二
1. 假设 PTT 看版的投票系统是公正的,在开票前没人能看到当前
选票分布及投票者的留言
2. 开设以下的投票
* 主题: 我(投票者)是否要参加抽奖?
* 选项: {是, 否}
* 一人一票
选项 "否" 事实上是不必要的,但我猜想系统不会允许只有一个
选项的投票
3. 投票後,每个投票者请在意见栏里留下至少一个整数
4. 开票後
* S = 每个投票者留下的整数之和
* 每个投票者会由投票系统自动给予一流水序号
"(S % 「是」票的总数) +1" 既是得奖号码,对应到投「是」
票的人的流水序号
若要多次抽奖,则可继续开奖,例如,先移除中奖者, 并依序递
补流水序号,然後
"(S % (「是」票的总数-1)) +1" 为新得奖号码
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 68.4.112.174
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/GameDesign/M.1412946702.A.4A7.html
延伸阅读:
http://en.wikipedia.org/wiki/False_dilemma :D
※ 编辑: AmosYang (68.4.112.174), 10/10/2014 21:12:27
至於「会不会有人开分身来增加得奖机会? 」,可如一般投票加设条
件,例如,同 IP 者,以先投票的人优先,後投票者吃土
※ 编辑: AmosYang (68.4.112.174), 10/10/2014 21:16:42
「如果有人闹场特意灌大数字怎麽办?」
假设留言区一行80字元,最多三行,那就是最大只能灌到 (10^80-1)*3,
也只是个用 41 bit 就能代表的整数; 1GB 记忆体有 8*10^9 bit,
足以记载一个 2585827972 位的数字, 远大於 10^80 (一个 80 位的数字)
这就像是今日已经没人在用 email bomb 了…
※ 编辑: AmosYang (68.4.112.174), 10/10/2014 21:33:40
「如果有人闹场特意使用科学算式表示式, 如 2^2^2...^2 怎麽办?」
http://en.wikipedia.org/wiki/Tarring_and_feathering
※ 编辑: AmosYang (68.4.112.174), 10/10/2014 21:38:05
1F:→ cowbaying: 数值太大只要用位元运算子来修正溢位的部分就好了吧? 10/10 22:06
实务上,就这次的情形,可以这样做;甚至可规定数值必须在 Int32.MaxValue
与 Int32.MinValue 之间
数学上,得详细分析这是否会对开票得奖的 randomness 有显着的影
响
※ 编辑: AmosYang (68.4.112.174), 10/10/2014 22:15:57