Algoritmo per tempo casuale


8

Sto facendo fatica a modellare il tempo. Modellare un singolo aspetto è banale: qualche schema sinusoidale + rumore casuale. Comunque più di 1 mi sta facendo impazzire. Non posso avere vento, foglie che cadono, pioggia e neve per essere tutti casuali. Semplici collisioni come pioggia e neve non dovrebbero mai accadere.

Inoltre, vorrei un livello di "intensità" per ciascuno di essi. Ma questo può venire dopo la logica principale.

Il tempo è memorizzato in MySQL.

Tutti i tuoi suggerimenti sono benvenuti, ma per favore non suggerire di eseguire il ping di un codice postale e di estrarre il meteo da lì.


Utilizzando i suggerimenti, in realtà, da tutte le risposte di seguito ho trovato questa distribuzione non in scala :

Modificatori meteorologici in funzione della settimana dell'anno

Ogni caratteristica verrà calcolata con un rumore casuale e la combinazione delle 3 produrrà effetti di sovrapposizione.

(temp <0) e (umido> 65) => neve


5
A proposito, neve + pioggia è un tempo valido.
Kromster,

1
Bene, non sarà nel mio gioco. MrGreen
Mikhail il

1
La neve non è solo il risultato di pioggia + bassa temperatura?
Philipp,

Risposte:


9

Che ne dici di dividere il tempo in parti più dettagliate?

Precipitation - none/light/moderate/heavy
Wind - none/light/moderate/heavy
Type - rain/hail/snow

Puoi comunque archiviarlo in una singola colonna SQL se vuoi, rendendolo un semplice enum con 48 (4 * 4 * 3) valori possibili (rimuovendo eventuali strani conflitti che non ti piacciono).


7
Penserei di dividere in "temperatura", "vento" e "umidità". Questi potrebbero quindi essere interpretati come implicanti pioggia / grandine / neve / ecc., Senza mai avere un conflitto.
Trevor Powell,

7

Sembra che un modello nascosto di Markov possa esserti utile. Questi definiscono alcuni stati con probabilità statistiche di transizioni da uno stato a ciascuno degli altri stati in base alla frequenza relativa nelle osservazioni.

È possibile definire alcuni stati meteorologici, ad esempio 'piovoso' e 'soleggiato' e le probabilità di transizioni da piovoso a soleggiato e soleggiato a piovoso e calcolare, ad esempio, la probabilità che presto pioverà in base all'osservazione di se è attualmente soleggiato o piovoso . L' articolo di Wikipedia lo spiega, ma questo tutorial (PDF) mostra un approccio più pratico.

Se stai modellando molti modelli meteorologici diversi, sarebbe difficile modellarli indipendentemente con questo modello, ma puoi definire condizioni meteorologiche come 'FogRain' o 'WindSnow' 'SunWind' 'Sun' per esempio e avere delle probabilità per ciascuno. Queste probabilità potrebbero anche essere modificate in base al mese di gioco, ad esempio. C'è un piccolo problema da tenere presente, tuttavia, che la dimensione della matrice di probabilità aumenterà di n ^ 2 quando si aggiungono più tipi meteorologici poiché ognuno deve avere probabilità di transizione (anche se sono zero) agli altri.


Modello Markov, non HMM.
Peter Taylor,

+ 1ed per semplicità. Avere qualcosa di semplice, sintonizzabile e comprensibile è molto meglio che avere qualcosa di preciso e complesso. Inoltre, puoi sempre renderlo più elaborato, se lo desideri, e far dipendere le probabilità di transizione da qualcosa (altitudine, bioma locale ecc.).
Michael,

Anche se mi piace, è leggermente scomodo dal momento che altri sviluppatori dovrebbero pensare alle transizioni nelle probabilità. Insieme al fatto che il tempo dipende dal tempo dell'anno, il modello di Markov probabilmente complicherebbe le cose
Mikhail,

Forse fraintendo il tuo suggerimento. Per ogni mese dovrei avere una tabella n ^ 2 delle probabilità di transizione, giusto? Dove N è il 2 ^ O di tutte le condizioni meteorologiche. Avendo quindi 3 modelli meteorologici, avrei 64 probabilità per un solo mese
Mikhail,

@Mikhail per ogni mese avresti una tabella delle probabilità di transizione da ogni condizione meteorologica a ogni altra condizione, ma questo non deve necessariamente essere N ^ 2 nella complessità dello spazio in quanto non deve essere una matrice (potrebbe essere una struttura grafica ciclica con ogni ramo che punta a uno dei valori successivi nella catena con una probabilità allegata). Non è così difficile concettualizzare, ma forse ti piacerebbe dividerlo per ogni 2-3 mesi anziché ogni mese. Questo articolo è migliore di quello che ho precedentemente collegato, potrebbe aiutare di più!
Martin Foot,

4

In breve..

Lo penserei attraverso la scienza.

Come tutti sappiamo, la neve è pioggia e viceversa, tranne che hanno diversi stati solidi a causa delle variazioni di temperatura.

I cambiamenti di temperatura possono essere associati ai venti.

Un rapido Google per "che cosa causa il vento" mi ha dato una risposta da Answers.com:

"La forza del gradiente di pressione, che deriva dal riscaldamento irregolare della superficie terrestre. Una volta che è in movimento, la forza di Coriolis nasce dalla rotazione terrestre per deviarla (proprio nell'emisfero settentrionale, a sinistra nell'emisfero meridionale)."

Sì, non è la migliore fonte di domande scientifiche, ma dà l'idea.

Quindi, in teoria, ora hai solo bisogno del vento. Potrebbe essere casuale o potrebbe anche essere in qualche modo scriptato nel tuo ambiente che si riscalda a causa di alcuni eventi.

Prendi il vento ora, applica la tua posizione attuale e, casualmente o attraverso un modo scritto, crea nuvole da esso. Più densa è la nuvola, maggiore è la probabilità e la densità della pioggia. Se la temperatura è abbastanza bassa, la pioggia diventa neve. Muovi la nuvola e rendila "non così densa" con quel vento.

Per quanto riguarda il display, dipende da te, basta memorizzare nella cache gli stati delle particelle che cadono if rain -> use water drop texturee if snow -> use snowflake texture. Usa il vento per far muovere queste particelle in base alla direzione del vento (sì, dovresti conservare anche questa, da qualche parte) per renderla un po 'più realistica.

E con questo puoi espandere tutto. Ad esempio, se cade la neve e i fiocchi di neve cadono vicino a una sorta di fonte di calore, cambia di nuovo la trama delle particelle in pioggia.

Molte possibilità in realtà, questo è solo un concetto semplice.

PS Per quanto riguarda la grandine, guarda cosa li rende, espandi il concetto di tale ambiente.

Buon divertimento, buona fortuna.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.