Comunidad Game Maker

Ayuda => Desarrollo de Scripts => Mensaje iniciado por: FrozenPanda en Agosto 01, 2009, 01:30:55 AM

Título: random2
Publicado por: FrozenPanda en Agosto 01, 2009, 01:30:55 AM
Citar
    * Breve descripción de su función : Este Script sirve para obtener un número aleatoriamente entre dos números con la posibilidad de retornarlo o no con decimales.
    * Versión GM utilizada :  :GM7: PRO (vale con cualquiera)

    * Código del Script -si se usan argumentos, se debe indicar su función- :

/****

Este Script sirve para obtener un número aleatoriamente entre dos números con la posibilidad de retornarlo o no con decimales.

Argument0 = Mínimo
Argument1 = Máximo
Argument2 = ¿Retornar con decimales?
****/

var rnd2; rnd2=(random(argument1-argument0)+argument0);
if !(argument2){return rnd2-frac(rnd2);}else{return rnd2;}
Título: Re: random2
Publicado por: fega en Agosto 12, 2009, 03:53:22 AM
retornar o no con decimales? ???
Título: Re: random2
Publicado por: Fenris78 en Agosto 13, 2009, 04:31:03 PM
La funcion random de GM devuelve numeros aleatorios, pero siempre con decimales, ahi la utilidad del script.
Título: Re: random2
Publicado por: FrozenPanda en Agosto 13, 2009, 08:27:30 PM
Cita de: Fenris78 en Agosto 13, 2009, 04:31:03 PM
La funcion random de GM devuelve numeros aleatorios, pero siempre con decimales, ahi la utilidad del script.
Adem?s, el script este devuelve entre 2 n?meros. GM siempre devuelve entre 0 y el n?mero que pongas  ;)
Título: Re: random2
Publicado por: Ciberman en Septiembre 30, 2009, 02:58:09 PM
mh... creo que te quedo lo del reglamento:
    * C?digo del Script -si se usan argumentos, se debe indicar su funci?n- :

XD aparte noi espesificas los argumentos 1 y 2 pero supongo que son los dos numeros entre medio
Título: Re: random2
Publicado por: hardraid en Septiembre 30, 2009, 06:03:37 PM
Ciberman:

argument0 y argument1 son los numeros a introducir y argument2 es boolean para decidir si devolver con decimales o no.

CelSeven se equivoco:
Citar
Argument0 = ?Retornar con decimales?

Pero de cualqueir forma el script tiene 2 lineas locas, tan dificil de entender no puede ser xD jajaja
Título: Re: random2
Publicado por: Wadk en Septiembre 30, 2009, 07:56:34 PM
La ?ltima l?nea se puede optimizar:
return rnd2-(frac(rnd2)*(!argument2));

Muy ?til el script :)
Título: Re: random2
Publicado por: KrakenHimoto en Noviembre 23, 2009, 06:53:45 AM
En ves de rnd2-frac(rnd2);
No es mejor poner floor(rnd2); ?


Por otro lado el "Argument0 = ?Retornar con decimales?" no es el argument 2?
Título: Re: random2
Publicado por: metalfox6383 en Noviembre 29, 2009, 12:11:37 AM
Opino lo mismo. GM tiene ya funciones de redondeo: floor(), ceil() y round(). Cualquiera me devuelve un entero.
Título: Re: random2
Publicado por: Wadk en Diciembre 02, 2009, 06:17:40 AM
Cita de: KrakenHimoto en Noviembre 23, 2009, 06:53:45 AM
En ves de rnd2-frac(rnd2);
No es mejor poner floor(rnd2); ?
No si la ?ltima l?nea se reemplaza por lo que puse yo antes :P .
Cita de: KrakenHimoto en Noviembre 23, 2009, 06:53:45 AM
Por otro lado el "Argument0 = ?Retornar con decimales?" no es el argument 2?
S?, el CelSeven se equivoc?.
Cita de: metalfox6383 en Noviembre 29, 2009, 12:11:37 AM
Opino lo mismo. GM tiene ya funciones de redondeo: floor(), ceil() y round(). Cualquiera me devuelve un entero.
Es m?s pr?ctico tener un s?lo script que devuelva un n?mero aleatorio entre dos n?meros dados con o sin decimales. Adem?s ceil y round dan problemas al ser usados con n?meros aleatorios.
Título: Re: random2
Publicado por: Hackware en Diciembre 11, 2009, 08:46:05 PM
Cita de: Wadk en Diciembre 02, 2009, 06:17:40 AM
Cita de: metalfox6383 en Noviembre 29, 2009, 12:11:37 AM
Opino lo mismo. GM tiene ya funciones de redondeo: floor(), ceil() y round(). Cualquiera me devuelve un entero.
Es m?s pr?ctico tener un s?lo script que devuelva un n?mero aleatorio entre dos n?meros dados con o sin decimales. Adem?s ceil y round dan problemas al ser usados con n?meros aleatorios.

?Qu? clase de problemas? Alguna vez le? algo sobre que la mejor funci?n a usar entre round, floor, y ceil era floor porque es el ?nico que mantiene la correcta aletoreidad cuando se requiere un n?mero entero al azar. Sin embargo, si te refieres a otra clase de problemas me gustar?a conocerlos.

?Saludos!
Título: Re: random2
Publicado por: Wadk en Diciembre 11, 2009, 08:56:31 PM
Si, es lo que decis.
El problema con ceil es que si el random devuelve exactamente cero, ceil tambien devolvera cero.
Y sobre round, cito:
Cita de: Naked Paul Toastrand_number=round(random(2));

Looking at the distribution, we will find that 0 will be returned 25% of the time, 1 50% of the time and 2 25% of the time. This is probably not what we want.

Think of it this way:
25% of the time 0 - 0.5 is returned and rounded down to 0.
25% of the time 0.500000001 - 1 is returned and rounded to 1.
25% of the time 1.000000001 - 1.49999999 is returned and rounded to 1.
25% of the time 1.5 - 1.9999999999 is returned and rounded to 2.
Título: Re: random2
Publicado por: MatuX en Diciembre 15, 2010, 06:30:48 PM
yo por mi parte pongo o floor() o  1 DIV()
Título: Re: random2
Publicado por: lordgeorge en Diciembre 16, 2010, 02:28:00 AM
Es un poco antiguo el tema... pero en GM8 (no s? si estan en GM7 o menos) existen las funciones: [gml]random_range(x1,x2)//Genera un n?mero con decimales entre x1 y x2
irandom_range(x1,x2)//Lo mismo, pero solo genera numeros enteros[/gml]

Espero que a alguien le sirva xD
Título: Re: random2
Publicado por: Wadk en Diciembre 19, 2010, 03:54:05 AM
Cita de: lordgeorge en Diciembre 16, 2010, 02:28:00 AM
Es un poco antiguo el tema... pero en GM8 (no s? si estan en GM7 o menos) existen las funciones: [gml]random_range(x1,x2)//Genera un n?mero con decimales entre x1 y x2
irandom_range(x1,x2)//Lo mismo, pero solo genera numeros enteros[/gml]

Espero que a alguien le sirva xD
Estoy casi 100% seguro que en GM7 y anteriores esas funciones no existen. Por lo que en es ?til en GM5, 6 y 7 (el script deber?a funcionar en las 3, si no me equivoco).