[C con Clase] aleatorios con n decimales
Programante
programante en gmail.com
Mie Oct 10 15:36:31 CEST 2007
Zaka E-Lab escribió:
> Agustín Cota Reguero escribió:
>
>
>> Para la segundo no se me ocurre ahora mismo ninguna solución
>> aunque seguro que la hay, sin embargo para la primera es algo mas
>> sencillo. Puedes generarte un numero aleatorio con rand. Pides al
>> usuario que introduzca el numero de decimales n y ahora compones una
>> cadena para pasarle a printf y que muestre ese numero de decimales que
>> quieres. Por ejemplo:
>>
>> sprintf(cad,"Aqui va un número aleatorio: \%.%ilf",numerodecimales);
>> printf(cad,numeroaleatorio);
>>
>> Eso debería mostrarte en la pantalla el número aleatorio con los
>> decimales que tu quieres.
>> Hay muchas mas maneras de hacerlo y esta sólo es una así que si tu
>> problema no es exactamente este hay mas soluciones.
>>
>> Un saludo
>> Agustín
>>
>
> Yo no estoy seguro de que este sea el comportamiento:
>
> -->La función rand está definida de la siguiente manera:
>
> int rand (void), por lo que siempre devolverá un entero ( 0 decimales ).
> Si intentas mostrar un entero con una precisión de x decimales, lo que
> mostrarás será un número con x decimales a la izquierda de la coma,
> ejemplo, supongamos que tenemos el número 25 con una precisión de 4
> decimales.Se mostraría lo siguiente:
> 25.0000( la coma ya sabemos que es punto en el sistema americano ).
>
> Zaka.
>
la función rand() sí.
Pero no float numeroaleatorio = (float)1/rand();
Respecto al segundo método, una forma básica de mostrar tres decimales
sería:
printf("%d.%d%d%d", rand(), rand() % 10, rand() % 10, rand() % 10);
Más información sobre la lista de distribución Cconclase