Foros del Web » Programación para mayores de 30 ;) » Programación General »

Generar números aleatorios [Matemáticas]

Estas en el tema de Generar números aleatorios [Matemáticas] en el foro de Programación General en Foros del Web. Hola, no me digais rand(a,b), la cosa es que he buscado en internet sin encontrar nada y quiero saber como funciona la función rand, es ...
  #1 (permalink)  
Antiguo 11/03/2009, 15:12
 
Fecha de Ingreso: abril-2007
Mensajes: 213
Antigüedad: 17 años
Puntos: 0
Generar números aleatorios [Matemáticas]

Hola, no me digais rand(a,b), la cosa es que he buscado en internet sin encontrar nada y quiero saber como funciona la función rand, es decir el algoritmo que sigue para generar números aleatorios.

Se me ocurrio uno utilizando el tiempo, pero creo que tiene que ser mucho más sencillo.
  #2 (permalink)  
Antiguo 16/03/2009, 09:50
Avatar de Lord Kazuky  
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 17 años, 10 meses
Puntos: 5
Respuesta: Generar números aleatorios [Matemáticas]

Tengo entendido que las funciones 'rand' generalmente trabajan con varias tablas de numeros de determinada cantidad de valores y luego por medio de la fecha y hora (realmente los microsegundos creo) se selecciona determinada tabla y de acuerdo al numero de veces que llamas la funcion se escoje el elemento.

Por ejemplo:
Tu tienes 2 tablas de numeros aleatorios con 5 valores cada uno:
A: 5, 1, 2, 4, 3
B: 9, 6, 7, 0, 8

Entonces dependiendo del tiempo actual, se podira seleccionar la tabla nose A y como es la primera vez, entonces te da el primer elemento que tiene el valor 5.
Luego en una segunda vez que se llame la funcion, y te vuelve a dar la tabla A, esta vez te dara el segundo elemento: el valor 1
En una tercera vez que llames la funcion puede que use esta vez la tabla B y otro valor de la secuencia.

Estas tablas con estos valores y los algoritmos para escoger el valor han hido adaptandose con el tiempo, para hacerlos lo "mas aleatorio posible", pero la idea de los algoritmos genericos creo que es esa.

Al numero de la tabla y al valor que se escoje es lo que se llama 'semilla'.

En muchos lenguajes es comun encontrar una instruccion que especifique al generador de numeros aleatorios que se use el tiempo como un valor de donde se obtenga esa semilla. Entonces si no la inicializabas con el tiempo veias que siempre te generaban la misma secuencia de numeros.

El problema de estos algoritmos aunque es sencilla su implementacion no te otorgan numeros realmente aleatorios. ya que esas tablas siempre van a tener una secuencia fija de numeros, y si por ejemplo si repitieras la consulta en las mismas condiciones (aunque es bastante dificil) hay una alta probabilidad que te generen el mismo numero.

Es por eso, segun lei una vez que muchas de esas tablas ahora las estaban capturando de una fuente real de entropia (caos, desorden, que es afectado por muchas variables) como el ruido generado por una señal de un radio. Entonces se capturaba todo ese ruido y se transformaba en valores "aleatorios".

Ahora no entiendo si necesitabas solo entender el funcionamiento de "rand" o es que quieres hacer una funcion realmente de numeros aleatorios o que es lo que busques, si es para usar en un programa normal, con la funcion que viene en los lenguajes de programación creo que es más que suficiente.
__________________
Saludos.
"Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)"
  #3 (permalink)  
Antiguo 26/03/2009, 19:55
 
Fecha de Ingreso: junio-2008
Ubicación: Bogotá Colombia
Mensajes: 45
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Generar números aleatorios [Matemáticas]

Hola!

carlosgs91, aquí le tengo más teoría acerca de los números 'aleatorios': es.wikipedia.org/wiki/N%C3%BAmero_pseudoaleatorio

Hasta pronto!
  #4 (permalink)  
Antiguo 27/03/2009, 03:34
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Generar números aleatorios [Matemáticas]

http://www.math.utah.edu/~pa/Random/Random.html
  #5 (permalink)  
Antiguo 27/04/2009, 09:12
 
Fecha de Ingreso: abril-2007
Mensajes: 213
Antigüedad: 17 años
Puntos: 0
Respuesta: Generar números aleatorios [Matemáticas]

Muchas gracias

Entonces se trataria de crear varias tablas con numeros aleatorios y en funcion del tiempo sacar hno u otro.

Se me ocurre crear unas 20 con 10 numeros cada una, y que cada vez que se use una que se reemplace por otra que se cree aleatoriamente. Igual pruebo a hacerlo, ya os comentaré.

Era simple curiosidad, jeje
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:05.