全部评论
pair:(m,n) m n都是1-7生成的。共49对。按某个规则映射为1-49,1-49都是等概率出现的。49/9不能整除。扔掉映射后的46 48 49 .1 - 45依然是等概率出现的。再把这1-45 按另一种规则映射成1 -9. 代码前面有了
rand()7构造0-1生成器,等于7的时候抛弃,1-6的时候留下,其中生成1、3、5的时候记做0,生成2、4、6的时候记做1,然后反复使用4次0-1生成器,可以得到4位2进制数,可以表示0-15,把0和10-15的抛弃就得到1-9了
晕我写成扔掉小于40的……
就和 不均匀硬币 如何实现等概率一样
7进制
def rand9(): result = 49 while result>45: result = 7*(rand(7)-1) + rand7() return result%9 +1 和楼上思路相同
rand7 2次,49种情况,45种对应1-9,剩下的情况循环
相关推荐
点赞 评论 收藏
分享