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