valore di mezzo
valore di mezzo
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?
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?
Spoiler
- SP Games
- Membro
- Messaggi: 241
- Iscritto il: 27/06/2014, 11:21
- Specialità: Programmer
- Uso: GM:Studio 1.4 Pro
- Contatta:
Re: valore di mezzo
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
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

I miei giochi :
Super Chef World : https://play.google.com/store/apps/deta ... MarioWorld
Neon Marble : https://play.google.com/store/apps/deta ... NeonMarble

Super Chef World : https://play.google.com/store/apps/deta ... MarioWorld
Neon Marble : https://play.google.com/store/apps/deta ... NeonMarble


-
- Membro attivo
- Messaggi: 341
- Iscritto il: 03/09/2013, 13:26
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Pro
- Contatta:
Re: valore di mezzo
3 variabili? beh ci sono tanti modi. puoi metterli in una lista, assortirla e cercare il secondo elemento:
O più semplicemente in un array
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
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)
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)

O fai tutta la casistica
Oppure fai come ha detto jumoonp che di fatto è come farsi tutta la casistica
Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif
Spoiler
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: valore di mezzo
in gm 8.1 è proprio median()...
in matematica "il valore in mezzo" si definisce mediana.
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.

by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- pacmino
- GMI Guru
- Messaggi: 2569
- Iscritto il: 03/06/2009, 16:38
- Specialità: Scazzato cronico
- Uso: GM:Studio 2
- Località: Seconda stella a destra questo è il cammino e poi dritto, fino al mattino...
- Contatta:
Re: valore di mezzo
hover pilder https://www.youtube.com/watch?v=ZHdFLLfYLt4civic71 ha scritto:Bello l'Aliante Slittante
chissà se a grandezza naturale riuscirebbe a portare un uomo
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: valore di mezzo

by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- Alv
- Membro
- Messaggi: 133
- Iscritto il: 14/11/2014, 22:33
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Pro
- Località: Sicilia
- Contatta:
Re: valore di mezzo
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;
Ultima modifica di Alv il 29/11/2020, 23:37, modificato 1 volta in totale.
-
- Membro attivo
- Messaggi: 341
- Iscritto il: 03/09/2013, 13:26
- Specialità: Programmazione
- Uso: GM:Studio 1.4 Pro
- Contatta:
Re: valore di mezzo
È esattamente quello che intendevo con "fare tutta la casistica"
Utilizzo
GM: Studio Pro
C++ terminale
Batch
Jaschif
Spoiler
Re: valore di mezzo
ovvero median(...); come ha già detto baronAlv 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;
Chi c’è in linea
Visitano il forum: Nessuno e 37 ospiti