Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   numeros aleatoriios sin repetir (https://www.clubdelphi.com/foros/showthread.php?t=90977)

Delphius 20-10-2016 16:31:08

Cita:

Empezado por mamcx (Mensaje 509770)
Tienes razon Delphius. He re-chekeado el tema y lo que estaba intentando comunicar no estuvo bien.

He dado algunas vueltas a ver de donde saque tal idea, y creo que aqui hay un buen tema al respecto:

http://blog.blprnt.com/blog/blprnt/y...-visualization

Lo que se ve mas claro en las graficas es que los numeros aleatorios no siguen una progresion uniforme *estricta* tal como lo entenderia ingenuamente un ser humano. Sino que se pueden agrupar los resultados y ocurrir "brincos".

Que era lo que intentaba decir en respuesta a:



Lo cual por si solo no es un problema.

Ahora, como realmente se debe explicar esto?

Esos "brincos", "huecos", "espacios" o como se prefiera llamarles son inevitables en las distribuciones de números enteros. No es que el generador falle, sino que son simples errores de "redondeo" al expresar ese rango infinito en [0,1) hacia uno finito [A,B] o mejor dicho: [A,B).
A ver si me siguen la idea:

Queremos números en el rango [1,10) distribuídos uniformemente. Imaginemos a los números distribuídos en una regla:

0----------1----------2----------3----------4----------5----------6----------7----------8----------9----------10

Ahora debemos escalar/estirar la regla del rango [0,1) sobre esta:

0----------1----------2----------3----------4----------5----------6----------7----------8----------9----------10
0---------.1---------.2----------.3---------.4---------.5---------.6---------.7----------.8---------.9----------1.0

Podemos apreciar la razón o proporción entre ambas. De igual forma podemos inferir que hay una zona difusa ente 0.1 y 0.2. ¿Por ejemplo, que número debemos asumir si el valor R random es 0.15? Tenemos un hueco, y esto se debe a que para generar números enteros estamos "perdiendo esa precisión" hermosa que nos aportan los decimales. Hay infinitos valores R entre la VA = 1 y VA = 2. Pero estadísticamente la mitad de ellos van a traducirse a 1 y la otra mitad en 2. Cuando dos valores R son muy próximos entre si al "redondear" obviamente tendremos un VA repetido.

Imaginemos ahora que la regla para la VA es de [0,100)

0----------10----------20----------30----------40----------50----------60----------70----------80----------90----------10
0-----------.1----------.2-----------.3----------.4-----------.5----------.6-----------.7-----------.8----------.9-----------1.0

Un R entre 0.4 y 0.5 podrá producir 10 valores distintos de VA.

¿Y si repetimos el ejercicio con un rango [A,B) muchísimo más grande como 53454365462989021? ¡Perfecto! La magia del azar parece funcionar mucho mejor ¿que no?

En aquellas distribuciones de números reales, los efectos de huecos son menos vistos ya que aprovechan mejor los decimales. Los problemas y dificultades de entender la pseudo aleatoriedad está cuando uno necesita aplicar en distribuciones de números enteros. Son más prospensos a los repetidos.

No es difícil de entender.

Saludos,


La franja horaria es GMT +2. Ahora son las 10:27:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi