elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Sencillo Algoritmo de Números Pseudoaleatorios [Aporte]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sencillo Algoritmo de Números Pseudoaleatorios [Aporte]  (Leído 1,829 veces)
Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Sencillo Algoritmo de Números Pseudoaleatorios [Aporte]
« en: 17 Septiembre 2011, 21:31 pm »

Estuve prácticando hacer un algoritmo sencillo para generar números aletorios porque ya saben el de Visual Studio tiene muchos errores no me gusta :silbar:

El principal problema es la semilla que siempre usamos, datos que cambian constantemente como los Ticks del sistema o la hora, pero lamentablemente los procesadores de hoy en día trabajan tan rápido que en un milisegundo se producen miles de números "aletorios" con la misma semilla, y obtenemos horribles patrones o muchos números repetidos.

La función obtiene una cantidad Count de valores entre Min y Max de números pseudoaleatorios.

Código
  1.    Public Function RandomEx(ByVal Min As Long, ByVal Max As Long, Optional ByVal Count As ULong = 1) As Long()
  2.  
  3.        RandomEx = New Long() {}
  4.  
  5.        Dim Seed As Long = Date.Now.Ticks
  6.  
  7.        Do While RandomEx.Length <> Count
  8.            Array.Resize(RandomEx, RandomEx.Length + 1)
  9.            RandomEx.SetValue((Seed Mod (Max + 1)) + Min, RandomEx.Length - 1)
  10.            Seed -= Math.Floor(Seed / (Count + 1))
  11.        Loop
  12.  
  13.    End Function

Básicamente esto se encarga de colocar a Seed entre Min y Max
Código:
(Seed Mod (Max + 1)) + Min

Y esto de mantener a Seed diferente en cada vuelta del búcle, la fórmula asegura que Seed siempre será diferente sin causar Overflow.
Código:
Seed -= Math.Floor(Seed / (Count + 1))



« Última modificación: 18 Septiembre 2011, 00:02 am por Keyen Night » En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Algoritmo de Numeros Primos
Scripting
SmartGenius 1 4,560 Último mensaje 30 Diciembre 2008, 00:06 am
por SmartGenius
[APORTE] numeros primos
Java
Caballero Maldito 1 2,141 Último mensaje 2 Diciembre 2009, 21:27 pm
por Blitzkrieg'
[APORTE] Pathfinding A* (Algoritmo de búsqueda)
Programación C/C++
vangodp 5 2,809 Último mensaje 16 Octubre 2013, 22:02 pm
por Eternal Idol
[Aporte] Script sencillo que invade el pc y lo realentece
Hacking
sabeeee 6 3,415 Último mensaje 12 Marzo 2014, 22:47 pm
por dantemc
[APORTE SENCILLO] [BATCH] Calcular porcentaje
Scripting
.:Xx4NG3LxX:. 0 528 Último mensaje 9 Febrero 2020, 15:15 pm
por .:Xx4NG3LxX:.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines