题目:
已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。
不要使用系统的 Math.random() 方法。
示例1:
输入: 1
输出: [7]
示例 2:
输入: 2
输出: [8,4]
示例 3:
输入: 3
输出: [8,1,10]
提示:
rand7 已定义。
传入参数: n 表示 rand10 的调用次数。
LeetCode链接:https://leetcode-cn.com/problems/implement-rand10-using-rand7/
谨记公式:RandNN= N( RandN()-1 ) + RandN()
示例代码:
//方法一
int rand10() {
int n ,tmp1 ,tmp2;
do
{
tmp1 = rand7();
tmp2 = rand7();
n = (tmp1-1)*7+tmp2;//n是可以取1~49的随机的数。
} while (n>40);//当n>40舍去,这样n只能取1~40,对10取模就能取1~10之间的随机数
return 1+n%10;
}
//方法二
int rand10() {
int temp1;
int temp2;
do
{
temp1 = rand7();
}while(temp1>5);
do
{
temp2 = rand7();
}while(temp2>2);
return temp1+5*(temp2-1);
}