各位,下面有个问题,看看大家有没有更好的解决方案
有一中奖数字区间 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 全部数字控制就比较好。
有一中奖数字区间 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 全部数字控制就比较好。