Skip to content

470. 用Rand7实现Rand10 ​

  • 题号:470
  • 来源:LeetCode
  • 难度:中等
  • 标签:数学 模拟
  • 语言:TypeScript
  • 解法:1 个
  • 作者:lmliheng
  • 最近更新:2026-09-27

TypeScript · O(1) 时间 · O(1) 空间 · 更新于 2026-09-27

两次rand7构造1~49,拒绝大于40后取模

typescript
/**
 * @difficulty medium
 * @tags 数学,模拟
 * @time O(1)
 * @space O(1)
 * @note 两次rand7构造1~49,拒绝大于40后取模
 * @470. 用Rand7实现Rand10
 */
/**
 * The rand7() API is already defined for you.
 * var rand7 = function() {}
 * @return {number} a random integer in the range 1 to 7
 */
declare function rand7(): number;

var rand10 = function (): number {
    let res=0
    while (true) {
        res = (rand7() - 1) * 7 + rand7()//构造1~49的均匀分布
        if (res <= 40) {
            break
        } //剔除大于40的值,1 - 40等概率出现。
    }

    return res % 10 + 1//构造1 - 10的均匀分布
};

源码:ts/leetcode/470. 用Rand7实现Rand10.ts


在 GitHub 上查看题目所在目录:lmliheng/algorithm