| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
netjpv
Registrado: 05 Oct 2005 Mensajes: 3
| Publicado: 27/08/2007 1:19 pm | | | Título: Números aleatorios con decimales |
| | Como sacar números aleatorios decimales entre 0 y 1 con Dev-C++? |
| | Volver arriba | |  | digies

Registrado: 18 Nov 2005 Mensajes: 998 Ubicación: Blumenau (Br)
| Publicado: 27/08/2007 2:24 pm | | | Título: |
| Hola
Mira esto:
| Código: | #include <stdio.h> #include <stdlib.h> #include <time.h>
int main(void) { float a; srand(time(NULL)); /* Toma un número a partir de la fecha y hora actual. Varía en cada centésima de segundo. La semilla se toma del reloj del sistema. */ printf("Numero aleatorio entre 0 y 1: %.2f\n\n", a=rand()%2); system("PAUSE"); return 0; }
|
El problema con este código es que, si bien la parte entera te generará aleatoriamente en el intérvalo [0; 1], la parte decimal -con dos posiciones decimales- NO, siempre será 00. Lo que podrías hacer es crear otra variable que te genere aleatoriamente la parte decimal y luego, mediante las funciones de manejo de cadenas, concatenas los dos resultados. Bueno, esta es una de las opciones claro.
Otra manera sería algo así:
| Código: | #include <stdio.h> #include <stdlib.h> #include <time.h>
int main(void) { int a,b; srand(time(NULL)); printf("Numero aleatorio entre 0 y 1: %d.%d\n\n", a=rand()%2, b=rand()%10); system("PAUSE"); return 0; }
|
Un saludo. |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7516 Ubicación: Mexico
| Publicado: 27/08/2007 5:23 pm | | | Título: |
| Suponiendo que el lenguaje sea C ...
Basta con
1) Obtener el resultado de la funcion rand(). 2) Dividir el resultado del paso 1 entre "(RAND_MAX + 1.0)".
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | Volver arriba | |  | | manuel_venezuela
Registrado: 02 Mar 2011 Mensajes: 41 Ubicación: venezuela
| Publicado: 30/04/2014 6:12 am | | | Título: Re: Números aleatorios con decimales |
| | netjpv escribió: | | Como sacar números aleatorios decimales entre 0 y 1 con Dev-C++? |
saludos desde venezuela¡¡¡digo no se¡¡¡ no es mejor con un generador aleatorio...por ejemplo un gcl multiplicativo Xn=7^5 Xn-1 mod( 2^31-1)...donde la semilla es X0=1....a=7^5 ó multiplicador a=16807, modulo m= 2147483647= 2^31-1
aqui esta el codigo¡¡
| Código: |
#include<stdlib.h> #include<iostream> #include<stdio.h> using namespace std;
double random(int ,int,int);
main() { int semilla;//semilla int modulo,multiplicador; double ran,a;
int i=0;
cout<<"semilla: "<<endl; cin>>semilla; cout<<"modulo: "<<endl; cin>>modulo; cout<<"multiplicador: "<<endl; cin>>multiplicador;
cout<<endl; ran=random(semilla,modulo,multiplicador); cout<<(ran/modulo); cout<<endl; do{ a=ran; //cout<<a; ran=random(a,modulo,multiplicador);
cout<<endl; cout<<ran/modulo; cout<<endl; //para contabilizar los periodos i++;
}while(i<20); cout<<"periodo= "<<i<<endl; }
double random(int x,int m,int a) { double y; int random; int q,r; double aux=0; //a=3; //multiplicador //m = 31; //modulo q=m/a; //m div a r=m%a; //m mod a
y=a*(x%q)-r*(x/q); //cout<<y<<endl; if(y<0) //else { aux=y+m; return aux; } return y; }
|
|
| | Volver arriba | |  | leosan
Registrado: 19 Abr 2012 Mensajes: 730 Ubicación: GRAN CANARIA
| Publicado: 22/05/2014 1:11 pm | | | Título: Re: Números aleatorios con decimales |
| | netjpv escribió: | | Como sacar números aleatorios decimales entre 0 y 1 con Dev-C++? |
¿Algo como esto?:
| Cita: | 10 numeros decimales entre 0 y 1:
0.21 , 0.23 , 0.67 , 0.78 , 0.89 , 0.54 , 0.11 , 0.45 , 0.59 , 0.47
|
| Código: | #include <stdio.h> #include <stdlib.h> #include <time.h>
int main() { int i; srand((unsigned) time(NULL)); printf("10 numeros decimales entre 0 y 1: \n\n"); for (i = 0; i < 10; i++) printf("%g , ", (float)(rand() % 101)/100); printf("\b\b \n\n"); return 0; } |
¡¡¡¡ Saluditos! ..... !!!! |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |