0
点赞
收藏
分享

微信扫一扫

用 Rand7() 实现 Rand10()

村里搬砖的月野兔 2021-09-21 阅读 62
今日算法
题目描述:
示例 1:
示例 2:
示例 3:
思路:
  • 已知 rand_a() 可以等概率的生成[1, a]范围的随机数
    (rand_a() - 1) × b + rand_b() ==> 可以等概率的生成[1, a * b]范围的随机数
    即实现了 rand_ab()
  • rand_ab大于a且ab是a的倍数,则,rand_ab % a + 1 = rand_b;
代码实现:
class Solution extends SolBase {
    public int rand10() {
        while(true) {
            int num = (rand7() - 1) * 7 + rand7();
            if(num <= 40) return num % 10 + 1; 
        }
    }
}
举报

相关推荐

0 条评论