欢迎光临散文网 会员登陆 & 注册

来offer算法旗舰班

2022-09-27 09:47 作者:抽抽一生恋  | 我要投稿

rand4生成rand6

  • 给定一个 0-4随机数生成器 如何生成0-6随机数

这个题的难点在于如何保证数字出现的概率都是相等的。

0-6通过对7取余可以得到,那么就想办法凑对7取余的场景。

public class Frequency {    public static int rand7(){        while(true){            int num=5*rand5()+rand5();//0-24            if(num<21)                return num % 7;        }    } }//变形:如果用0-6随机生成器生成0-9随机数public class Frequency {    public static int rand10(){        while(true){            int num=7*rand7()+rand7();            if(num<41)            //排除41-48,因为他们不能生成9,会造成各个数字出现的概率不同                return num % 10;        }    } }


来offer算法旗舰班的评论 (共 条)

分享到微博请遵守国家法律