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;}
retornar o no con decimales? ???
La funcion random de GM devuelve numeros aleatorios, pero siempre con decimales, ahi la utilidad del script.
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 ;)
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
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
La ?ltima l?nea se puede optimizar:
return rnd2-(frac(rnd2)*(!argument2));
Muy ?til el script :)
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?
Opino lo mismo. GM tiene ya funciones de redondeo: floor(), ceil() y round(). Cualquiera me devuelve un entero.
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.
Cita de: Wadk en Diciembre 02, 2009, 06:17:40 AMCita 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!
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.
yo por mi parte pongo o floor() o 1 DIV()
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
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).