【剑指offer】用 Rand7() 实现 Rand10()

  |   0 评论   |   0 浏览

题目

已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。

不要使用系统的 Math.random() 方法。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/implement-rand10-using-rand7
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

我的答案

/**
 * The rand7() API is already defined for you.
 * var rand7 = function() {}
 * @return {number} a random integer in the range 1 to 7
 */
var rand10 = function () {
    while (true) {
        const a = rand7();
        const b = rand7();
        const c = a + (b - 1) * 7;
        if (c <= 40) {
            return (1 + (c - 1) % 10);
        }
    }
};

拒绝采样法。


标题:【剑指offer】用 Rand7() 实现 Rand10()
作者:limanting
地址:https://blog.manxiaozhi.com/articles/2021/10/03/1633252513877.html