C/Visual C - No tengo MSDN :(

 
Vista:

No tengo MSDN :(

Publicado por maCo (3 intervenciones) el 20/09/2001 15:16:41
hola quien me ayuda a generar un rand de 0 entre 1 con decimales ya sea 0.345546 o 0.436543 pero que nunca llegue a 1 y sea mayor a 0 con 6 cifras despues del 0.

ya probre esto pero solo me devueleve 0 o 1

int j,i;
for (i=0; i<10; i++)
{
j = rand() % 2;
cout << j << endl;
}

ya probe poniendo float o double envez de int y nada
gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Generar un número aleatorio entre 0 y 1 con decimales

Publicado por Alejandro (913 intervenciones) el 15/10/2024 21:12:52
MaCo, para generar un número aleatorio entre 0 y 1 (exclusivo) con 6 cifras decimales, puedes usar la función `rand()` de la siguiente manera:

1. Usar `rand()` para obtener un número entre 0 y 1.
2. Multiplicar el resultado por 1.0 para obtener un número decimal.
3. Asegurarte de que el número sea menor que 1.

Aquí tienes un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdlib>  // Para rand() y srand()
#include <ctime>    // Para time()
 
int main() {
    // Inicializar la semilla para rand()
    srand(static_cast<unsigned int>(time(0)));
 
    for (int i = 0; i < 10; i++) {
        // Generar un número aleatorio entre 0 y 1
        double randomValue = static_cast<double>(rand()) / RAND_MAX;
 
        // Asegurarse de que el número tenga 6 cifras decimales
        std::cout << std::fixed << std::setprecision(6) << randomValue << std::endl;
    }
 
    return 0;
}

Explicación del código:



1. `srand(static_cast<unsigned int>(time(0)));`: Esto inicializa la semilla para la generación de números aleatorios usando el tiempo actual, lo que asegura que obtengas diferentes números aleatorios cada vez que ejecutes el programa.

2. `double randomValue = static_cast<double>(rand()) / RAND_MAX;`: Aquí, `rand()` genera un número entero aleatorio. Al dividirlo por `RAND_MAX`, obtienes un número en el rango de 0 a 1 (incluyendo 0 pero excluyendo 1).

3. `std::cout << std::fixed << std::setprecision(6) << randomValue << std::endl;`: Esto imprime el número aleatorio con 6 cifras decimales.

Resultado:


Este código generará 10 números aleatorios entre 0 y 1, con 6 cifras decimales, y nunca alcanzará 1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar