/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Números aleatorios con decimales

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
netjpv



Registrado: 05 Oct 2005
Mensajes: 3

MensajePublicado: 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)

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com