[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