/
Inicio :: Foros

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

Generación de números aleatorios de manera UNIFORME enmatrix

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
ivan91



Registrado: 14 Feb 2014
Mensajes: 1

MensajePublicado: 14/02/2014 7:04 am
Título: Generación de números aleatorios de manera UNIFORME enmatrix

Buenos Días, por favor me podrían ayudar, necesito llenar una matriz cuadrada nxn con números aleatorios pero de manera uniforme es decir que no se repita muchas veces cierto número en comparación con otros.

Por favor agradecería su ayuda.[/b]
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7516
Ubicación: Mexico

MensajePublicado: 14/02/2014 8:43 am
Título:

¿Puedes dar mas información como el tamaño de la matriz y los limites de los valores aleatorios?

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: 24/04/2014 10:54 am
Título: Re: Generación de números aleatorios de manera UNIFORME enma

ivan91 escribió:
Buenos Días, por favor me podrían ayudar, necesito llenar una matriz cuadrada nxn con números aleatorios pero de manera uniforme es decir que no se repita muchas veces cierto número en comparación con otros.

tengo un programa en c++ , que genera números aleatorios en c++....
de un GCL multiplicativo: de la forma Xn=7^5 Xn-1 mod( 2^31-1)..donde muestras 20 numeros aleatorios con semilla:
//X0=12457 y mostrar los primeros 20 numeros generados


Por favor agradecería su ayuda.[/b]
Código:


//GCL multiplicativo de la forma Xn=aXn-1 mod m
//el (método de Schrage): nos dice :
//ax mod m = g(x) + mh(x)
//donde
//g(x) = a(x mod q) - r(x div q)
//y
//h(x) = (x div q) - (ax div m)
//donde
//q = m div a y r = m mod a.

//http://webdelprofesor.ula.ve/ingenieria/hhoeger/simulacion/PARTE4.pdf
//http://slideplayer.es/slide/120717/#

//problema 2 ...Xn=7^5 Xn-1 mod( 2^31-1)

//entonces multiplicador a=16807, modulo m= 2147483647
//X0=12457 y mostrar los primeros 20 numeros generados


#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
      Índice del Foro elrincondelc.com -> C/C++ en General
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