zoukankan      html  css  js  c++  java
  • LeetCode 470 用 Rand7() 实现 Rand10()

    题目描述

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

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

    题解

    (rand_Y - 1) * X + rand_X => 可以生成[1, X*Y]的等概率随机数。
    在本题中,可生成1-49的随机数,我们可以只取前40个,当数字大于40时,继续产生1-49的随机数,直到小于等于40停止。
    在得到1-40的随机数后,对10取余再加1,即可得到1到10范围内的随机数字

    代码

    class Solution {
    public:
        int rand10() {
            int ans = 0;
            do{
                ans  = (rand7() - 1) * 7 + rand7();
            }while(ans > 40);
    
            return ans % 10 + 1;
        }
    };
    
  • 相关阅读:
    lldb
    错误记录
    越狱后
    c#学习
    26python类
    day01
    第二冲刺阶段第四天
    第二冲刺阶段第三天
    第五周课后作业
    结对作业
  • 原文地址:https://www.cnblogs.com/woxiaosade/p/12907336.html
Copyright © 2011-2022 走看看