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:
(https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-frc3/v/t1.0-9/249100_124279131113170_323763072_n.jpg?oh=b9bf0509799a014a734ee87a5cdf4732&oe=54D3C8F9&__gda__=1427029414_1d536e922d0f7d46fb1cd36f71e2955f)
OJO: la distribución puede ser creada por cualquier función que se desee, solo hay que tener cuidado con sus comportamientos.
Saludos.
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" ^^
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.
Ok's, Realizare los cambios.
Gracias.