Pagina 1 di 1
valore di mezzo
Inviato: 27/10/2016, 15:14
da jumoonp
Salve ragazzi,
mi serve un piccolo aiuto. Ho tre valori in altrettante variabili. Con la funzione "MIN" trovo il valore più piccolo, con "MAX" quello più grande, ma il valore di mezzo non so quale funzione devo usare. Ho provato "MEDIAN", "MEAN" , ma mi danno dei valori che non corrispondono . Non devo cercare un valore medio, ma proprio quello reale che sta in mezzo tra il valore minimo e il massimo. Come faccio?
Re: valore di mezzo
Inviato: 27/10/2016, 16:35
da SP Games
Per una quantità dispari di valori devi solo inserirli in un array, ordinarlo e prendere il valore che sta nella posizione di mezzo, che nel caso degli array standard di GM (il cui indice parte da 0) sarà [MAX_INDEX] / 2.
Es. 9 - 27 - 12 - 8 - 14 -> 8 - 9 - 12 - 14 - 27 è l'array ordinato, il max index è 4, il tuo valore sta alla posizione 2 ed è pari a 12.
P.S. se hai solo 3 valori puoi anche usare semplicemente MIN e MAX per escludere i due estremi e il numero che ti rimane è quello che ti interessa.
Puoi fare la stessa cosa anche con piu numeri volendo, se ad esempio ne hai 5 fai 2 volte MIN e 2 volte MAX per escludere di nuovo gli estremi e quello che resta è sempre il tuo numero.
E ora che ci penso ci potrebbe uscire pure una bella funzione ricorsiva
Re: valore di mezzo
Inviato: 27/10/2016, 17:16
da Barnack
3 variabili? beh ci sono tanti modi. puoi metterli in una lista, assortirla e cercare il secondo elemento:
Codice: Seleziona tutto
///trova_valore_medio(a, b, c)
var tmp = ds_list_create()
ds_list_add(tmp, a, b, c)
ds_list_sort(tmp)
var ret = ds_list_find_value(tmp, 1)
ds_list_destroy(tmp)
return(ret)
O più semplicemente in un array
Codice: Seleziona tutto
///trova_valore_medio(a, b, c)
var tmp;
tmp[0]=a tmp[1]=b tmp[2]=c
array_sort(tmp)
var ret = tmp[1]
return(ret)
Così ti eserciti un po' a scriverti un algoritmo di sorting
O fai tutta la casistica
Oppure fai come ha detto jumoonp che di fatto è come farsi tutta la casistica
Re: valore di mezzo
Inviato: 27/10/2016, 23:25
da BaronVsCorsar
in gm 8.1 è proprio median()...
median(val1,val2,val3,...) Returns the median of the values, that is, the middle value. (When the number of arguments is even, the smaller of the two middle values is returned.) The function can have up to 16 arguments. They must all be real values.
in matematica "il valore in mezzo" si definisce mediana.
Re: valore di mezzo
Inviato: 28/10/2016, 14:09
da civic71
Bello l'Aliante Slittante
Re: valore di mezzo
Inviato: 28/10/2016, 15:20
da pacmino
civic71 ha scritto:Bello l'Aliante Slittante
hover pilder
https://www.youtube.com/watch?v=ZHdFLLfYLt4
chissà se a grandezza naturale riuscirebbe a portare un uomo
Re: valore di mezzo
Inviato: 28/10/2016, 21:10
da BaronVsCorsar
Re: valore di mezzo
Inviato: 31/10/2016, 14:22
da Alv
Per la mediana fra 3 valori, penso possa andar bene anche una semplice (e performante) funzione:
Codice: Seleziona tutto
if (val1<=val2) {
if (val2<=val3)
return val2;
return val3;
}
if (val1<=val3)
return val1;
return val3;
Re: valore di mezzo
Inviato: 31/10/2016, 17:03
da Barnack
È esattamente quello che intendevo con "fare tutta la casistica"
Re: valore di mezzo
Inviato: 01/11/2016, 16:23
da Tizzio
Alv ha scritto:Per la mediana fra 3 valori penso può andar bene anche una semplice (e performante) funzione:
Codice: Seleziona tutto
if (val1<=val2) {
if (val2<=val3)
return val2;
return val3;
}
if (val1<=val3)
return val1;
return val3;
ovvero median(...); come ha già detto baron