Junio 08, 2013, 07:20:24 AM Ultima modificación: Noviembre 29, 2014, 06:18:46 PM por Zela
Hola comunidad GM:
Ya que no encontré un "scrip random" con alguna distribución les proporciono un ejemplo por medio de la conocida función gaussiana  :)


•Nombre del creador : Zela

•Breve descripción de la función :
El Scrip entrega un valor random en el intervalo [0,1] con distribución gaussiana

•Versión GM utilizada : :GM8:

•Código del Script :
// // // // // // // // // // // //
// Funcion Random Gaussiano V1.1 //
// // // // // // // // // // // //
// La funcion entrega un valor random entre el intervalo [0,1]
// con una distribucion gaussiana
//
// By : Zela
//
var h,x_i;
h=random(1)
x_i=random(1)*10 - 5
while (h>(exp(-x_i*x_i/4))){ x_i=random(1)*10 - 5 }
return (x_i +5)/10


•Comentarios :
El scrip puede ser usado en cualquier otra versión que soporte las funciones nativas random() y exp()

El archivo adjunto proporciona un histograma de la función por medio de 1000 puntos evaluados por el scrip (imagen adjunta)
Imagen:



OJO: la distribución puede ser creada por cualquier función que se desee, solo hay que tener cuidado con sus comportamientos.
Saludos.
Fracasar no significa un fin sino un comienzo

Se ve bueno el script, pero no te recomiendo usar x como variable ya que alteraría la posición horizontal del objeto. Saludos!




Cita de: Texic en Junio 08, 2013, 08:04:16 AM
Se ve bueno el script, pero no te recomiendo usar x como variable ya que alteraría la posición horizontal del objeto. Saludos!

mmm.. De Ambigüedades por le nombre estoy de acuerdo, pero si es una variable local de la función, no debiese existir problemas al correrlo (Creo Yo). es como usar la variable "i" en el "for" ^^
Fracasar no significa un fin sino un comienzo

No, no es una variable local de la función. Así sería en casi cualquier otro lenguaje de programación, pero GM no funciona así :/. La i del for lo mismo.
Simplemente cambiarle el nombre a la variable tampoco sería una solucion adecuada, en realidad, porque todavía podría pasar que un objeto con una variable con ese nombre ejecute el script (y lo mismo podría pasar con la variable "h").
La forma correcta de solucionar el problema es la siguiente:
[gml]var h, x;[/gml]
Esto declara a "h" y a "x" como variables locales y específicas del script.
Vim.

Ok's, Realizare los cambios.
Gracias.
Fracasar no significa un fin sino un comienzo