Rand7()を使用してRand10()を実装する

Rand7()を使用してRand10(

既存のメソッドrand7は、1から7の範囲の均一なランダム整数を生成できます。メソッドrand10を記述して、1から10の範囲の均一なランダム整数を生成してみてください。

システムのMath.random()メソッドを使用しないでください。

 

例1:

入力:1
出力:[7]
例2:

入力:2
出力:[8,4]
例3:

入力:3
出力:[8,1,10]
 

促す:

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;

    }

};

 

おすすめ

転載: blog.csdn.net/wyzworld/article/details/111146395