Ten en cuenta que en las ciencias informáticas un problema casi siempere puede tener varias soluciones, de igual modo nosotros aquí te mostraremos lo mejor y más óptimo.
Solución:
Puede implementar su propio generador de números aleatorios utilizando funciones de hoja de cálculo. Por ejemplo, C++11 tiene un generador de números aleatorios de Lehmer llamado minstd_rand
que se obtiene por la recurrencia
X = X*g (mod m)
dónde g = 48271
y m = 2^31-1
En A1
puedes colocar tu valor inicial. En A2
ingrese la fórmula:
=MOD(48271*A1,2^31-1)
y cópielo hasta donde lo necesite.
En B2
ingresar =A2/(2^31-1)
y en C2
ingresar =NORM.INV(B2,10,1)
, copiando según sea necesario. Tenga en cuenta que siempre puede reemplazar el valor semilla en A1
por
=RANDBETWEEN(1,2^31-2)
si desea volver a activar la aleatoriedad volátil.
La siguiente captura de pantalla muestra 25 variables normales aleatorias generadas de esta manera:
Como puede ver en el histograma, la distribución parece más o menos normal.
Podrías usar un VBAFDU() basado en la función Rnd(). Ver:
Repetir variables aleatorias en VBA
No pretendo que sea una solución perfecta, pero a mí me funciona. Lo bueno de esto es que puedo asignar un número aleatorio a una celda en particular:
Public Function GetRandom(seed As Double, min As Double, max As Double) As Double
Dim colrow As Double
Dim range As Double
range = max - min
If (Application.Caller.Column() = Application.Caller.Row()) Then
colrow = (Log(Application.Caller.Column() + 1) * Log(Application.Caller.Row() + 1)) * seed
Else
colrow = (Log(Application.Caller.Column() + 1) / Log(Application.Caller.Row() + 1)) * seed
End If
Rnd (-1)
Randomize colrow
test = Rnd * range - range / 2
GetRandom = colrow
End Function
Uso:
=GetRandom($Z$1,1,-1)
Yo mi ejemplo, el valor inicial está en Z1 celda, pero por supuesto puede estar en cualquier otra celda. También me permite configurar valores mínimos y máximos.
Sección de Reseñas y Valoraciones
Nos puedes sustentar nuestra labor dejando un comentario y dejando una valoración te lo agradecemos.