Implementar Rand10 () con Rand7 ()

Utilice Rand7 () para implementar Rand10 (

El método existente rand7 puede generar un entero aleatorio uniforme en el rango de 1 a 7, intente escribir un método rand10 para generar un entero aleatorio uniforme en el rango de 1 a 10.

No utilice el método Math.random () del sistema.

 

Ejemplo 1:

Entrada: 1
Salida: [7]
Ejemplo 2:

Entrada: 2
Salida: [8,4]
Ejemplo 3:

Entrada: 3
Salida: [8,1,10]
 

rápido:

rand7 ya está definido.
Parámetros entrantes: n representa el número de llamadas a rand10.
 

Avanzado:

¿Cuál es el valor esperado del número de llamadas de rand7 ()?
¿Puede llamar a rand7 () lo menos posible?

)

 

Código:

// 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;

    }

};

 

Supongo que te gusta

Origin blog.csdn.net/wyzworld/article/details/111146395
Recomendado
Clasificación