征求一开奖算法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
qidizi

征求一开奖算法

  •  1
     
  •   qidizi
    qidizi 2018 年 1 月 5 日 3387 次点击
    这是一个创建于 3032 天前的主题,其中的信息可能已经有所发展或是发生改变。
    各位,下面有个问题,看看大家有没有更好的解决方案

    有一中奖数字区间 1~x ; x 是大于 1 的整数
    7 星彩每次随机选出 7 个球,每个球数字是 0~9 ;假设每次开出的球按顺序拼组数字后的数是 y

    问:什么算法可以根据 y 算出 x 区间的唯一中奖数字;且此算法从概率上来说,x 的每一个数字被选中的概率是一样的。

    算法 1:假如 用 y 取余 x 的算法会导致 1 机率很小,因为球开出 000000....00001 这样概率太小;


    算法 2:
    假如 y=1234567,x=1000,每次 x 按 10 等分,然后从左到右顺序使用 y 的每一个数字 r 取第 r 小段 z (注:y 的每位数字只会出现 1~9~0,所以 y 的 1 是对应第 1 小段,y 的 0 对应第 10 小段),z 再按 10 等分,循环余下的 y 数字取第几小段,最后到小段 z 是个数时就是 x 的中奖数字;推演:第 1 轮,y 的数字 r=1 对应 z=1~100 小段,第 2 轮 y 的数字 r=2 对应 z=11~20 小段,第 3 轮 y 的数字 r=3 对应 z=13,因为小段已经是最小单位不可再分,所以最后中奖数字是 13 ;若 y 的数字已经全部用完还不到个位数字,可以从头再来;

    算法 2 主要由第一个球的第一个数字决定。若能改进由 y 全部数字控制就比较好。
    9 条回复    2018-01-05 19:11:22 +08:00
    no1xsyzy
        1
    no1xsyzy  
       2018 年 1 月 5 日
    比如 x=7,10^7 mod 7≠0,所以并不存在完全等概率。
    至于算法 1,在 x=7 的时候,开出 1+7*i, i=0,1,2,3,...都能得到最终=1
    重新看一遍取余
    vjnjc
        2
    vjnjc  
       2018 年 1 月 5 日
    1 楼+1。
    感觉算法 2 太嗦,也不是等概率。
    你要么在 1 的基础上升级下算法,所有的数都是 1index 的
    假设 y 在区间[1, 10000000]中,x 在区间[1, 7],
    10000000 mod 7 = 3,那么把最后面 4 个数字单独走算法 3.

    也就是
    if x in [1,9999995]
    算法 1
    else
    算法 3

    所谓的算法 3 就是
    9999996 9999997 9999998 9999999 这 4 个数字均匀的映射到[1, 7]里面去,不好意思这个算法我写不出来(哈哈哈哈哈
    zoeyzhang
        3
    zoeyzhang  
       2018 年 1 月 5 日
    根据 index 取值不就好了?
    ballshapesdsd
        4
    ballshapesdsd  
       2018 年 1 月 5 日
    智商不够,看不懂算法 2
    ballshapesdsd
        5
    ballshapesdsd  
       2018 年 1 月 5 日
    看了 2 楼,感觉楼主的问题是,如何把 x 面的均匀色子,变成 y 面的色子。
    y>x,明显不可能。
    y=x,不需要转换。
    x%y==0,很简单。
    x%y!=0,从我感觉上来讲,貌似不可能。把条件放宽一点,x 面的色子可以扔无数次,根据概率的加和和乘法原理,无论怎么组合,概率的分母都应该是 x 的 n 次方,x 的 n 次方%y 仍然!=0,所以貌似是无解的。

    不信你试试用 3 面的色子,看看能不能产生 1/2 的概率。
    qidizi
        6
    qidizi  
    OP
       2018 年 1 月 5 日
    感谢各位围观,我补充一下,
    这个算法的目的是解决这个问题:

    奖品被设定成达到 n 人就开奖的形式;
    贡献值大的人中奖机会大;
    开奖方式够随机公平,能经得起“我们开奖方绝对无法做手脚”推论;


    所以我想了上面的方案。

    * 每人按先后顺序领号
    * 每人的贡献值基数是 1,根据上面的编号做先后顺序,以贡献值为区间组合得到一个连续的区间 1~x,也就是贡献是 10 的人且在第一位,那它的得奖区间为 1~10 ;
    * 人数达到后,公示 1 天;大家可以拿上面信息存档;
    * 第三方 7 星彩每期的开球是随机的 0~9 的数字,7 个球,刚好解决随机公正问题,设这个组合数为 y
    * 最后我们和用户都可以拿到存档区间 x 根据 y 计算出中奖那个数,然后,看它在那个人的中奖区间,
    * 最后,拥有这个区间的用户得到这个奖品;
    ballshapesdsd
        7
    ballshapesdsd  
       2018 年 1 月 5 日
    贡献值是 x,10**7%x!=0 的情况下绝对做不到完全公平
    @qidizi
    shd
        8
    shd  
       2018 年 1 月 5 日
    这其实就是一元夺宝吧,奖品 a 所需的贡献值为 100 分,相当于卖 100 元,每份 1 元,对应的幸运码[0-99],参与者按认购的份额获取随机幸运码,例如 a 认购 10 份,获取的应的幸运码例如[1, 3,5,19,28,45,58,59,79,91]这 10 个码,每人个参与者的码不同,一共一百个,最后根据外部彩票的数字用 100 取余,得到的幸运码即为开奖结果。
    qidizi
        9
    qidizi  
    OP
       2018 年 1 月 5 日 via Android
    类似于 1 元夺宝,但是我们目的是足够的人参与情况下,贡献值与概率成正比,公平且不容置疑即可。因为变量只要用我们能触及的数据就有值得怀疑。大家可以提供另外一个方案也行
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2458 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 01:16 PVG 09:16 LAX 18:16 JFK 21:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86