首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
宝塔
V2EX  ›  问与答

来看看这样的中奖算法有没有 bug?

  •  
  •   toou123 · 325 天前 · 1298 次点击
    这是一个创建于 325 天前的主题,其中的信息可能已经有所发展或是发生改变。

    每个参与者给一个序号作为抽奖码。最终抽 6 个中奖号码。需求就是公平,无法暗箱操作,中奖号码均匀分布

    现在的算法是这样的

    a=某日的上证指数收盘数字
    b=(总参与人数除以 6 )取商
    c=(总参与人数除以 6 )取余数

    第一中奖号码=( a*100 )^2 除以( b+c )取余数+1
    第二中奖号码=第一中奖号码+b
    第三中奖号码=第二中奖号码+b
    第四中奖号码=第三中奖号码+b
    第五中奖号码=第四中奖号码+b
    第六中奖号码=第五中奖号码+b

    10 回复  |  直到 2018-12-27 19:01:06 +08:00
        1
    zqqian   325 天前 via iPhone
    不应该除以 b+c
    应该除以一个质数
        2
    swulling   325 天前 via iPhone
    用 Python 的 random choice 就好了,拿上证指数作为种子

    何必自己写
        3
    whileFalse   325 天前   ♥ 1
    不合理。

    举个例子:
    ( a*100 )^2 的尾数只能是 1,3,4,5,6,9,不可能为 0,2,7,8
    如果 B+C=10,则无论 a 为任何值时,序号尾号 1,3,8,9 的人都不可能中奖。
        4
    across   325 天前
    如果硬要说有缺点,那就是后续中奖号码?
    因为第一个发出去后,结果就出来了。反正和你相邻的中奖了,后面就知道判断不用得开奖就可以回去睡觉了。
    发奖号码估计是真·手动随机发吧。
        5
    whileFalse   325 天前
    @across 这倒有可能是个需求。比如不希望一个部门拿到一堆奖,其他部门拿不到。
        6
    546669204   325 天前   ♥ 1
    把历年的上证收盘价导出 写了一个测试
    在固定人数的情况下 中奖的永远是那么几个 部分号码不会得奖。
    https://jsfiddle.net/wkuyzc3d/
        7
    lance6716   325 天前
    第一眼看到的漏洞就是均匀分布不是强行均匀啊……
        8
    yurang   325 天前
    - 随机数的性质:
    - 随机性:不存在统计学偏差,是完全杂乱的数列(弱伪随机数)
    - 不可预测性:不能从过去的数列推测出下一个出现的数(强伪随机数)
    - 不可重现性:除非将数列本身保存下来,否则不能重现相同的数列(真随机数)
        9
    xiaochocking   325 天前
    均匀分布是。。? 真随机还怎么均匀
        10
    geelaw   325 天前 via iPhone
    乱编一个算法不像是能满足要求。

    一个很明显的错误在于这几个号码不独立。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   805 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 20:05 · PVG 04:05 · LAX 12:05 · JFK 15:05
    ♥ Do have faith in what you're doing.