既存のメソッドrand7は、1から7の範囲の均一なランダム整数を生成できます。メソッドrand10を記述して、1から10の範囲の均一なランダム整数を生成してみてください。
システムのMath.random()メソッドを使用しないでください。
rand7はすでに定義されています。
着信パラメーター:nは、rand10への呼び出しの数を表します。
rand7()呼び出しの数の期待値はどれくらいですか?
rand7()をできるだけ少なく呼び出すことができますか?
コード:
// The rand7() API is already defined for you.
// int rand7();
// @return a random integer in the range 1 to 7
class Solution {
public:
int rand10() {
int num = 50;
while(num>40){
num = (rand7()-1)*7+rand7();
if(num<=40) return num%10+1;
}
return 0;
};
//(randX()-1)*Y+randY() 可以实现[1,X*Y]范围内的等概率随机数
//randN()%X+1 N为X的整数倍可以实现[1,X]范围内的随机数
int *answer(int n){
int count = 0;
int data[n];
while(count<n){
data[count++] = rand10();
}
return data;
}
};