2012-03-03 8 views
10

La mia funzione di disturbo Perlin (che aggiunge 6 ottave di 3D simplex a 0,75 di persistenza) genera un array di array 2D di double s.Distribuzione uniforme da una funzione di rumore Perlin frattale in C#

Questi numeri vengono tutti normalizzati a [-1, 1], con la media a 0. Li blocco per evitare eccezioni, che penso siano dovute a problemi di accuratezza in virgola mobile, ma sono abbastanza sicuro del mio fattore di ridimensionamento è abbastanza buono per limitare l'emissione di rumore esattamente a questo quartiere nel caso ideale.

In ogni caso, sono tutti dettagli. Il punto è, ecco una matrice 256 by-256 di rumore:

enter image description here

l'istogramma con un piccolo normale aspetto:

enter image description here

Matlab lillietest è una funzione che applica il test di Lilliefors per determinare se una serie di numeri proviene da una distribuzione normale. Il mio risultato è stato, ripetutamente, 1, il che significa che questi numeri non sono normalmente distribuiti.

Vorrei una funzione f(x) tale che, se applicata all'elenco dei valori dalla funzione rumore, i risultati vengano distribuiti uniformemente.

Vorrei che questa funzione fosse implementabile in C# e non impiegare minuti per l'esecuzione.

Ancora una volta, non dovrebbe importare da dove provengano i numeri (la domanda riguarda la trasformazione di una distribuzione in un'altra, in particolare una normale come quella di uniformare). Tuttavia, la mia implementazione della funzione rumore è basata su this e this. È possibile trovare la matrice di valori sopra riportata here.

+0

L'istogramma sembra abbastanza normale, ma si sta usando uniforme e normale in modo intercambiabile (non lo sono). Dato il funzionamento di perlin noise, in particolare la continuità, una distribuzione alquanto normale è molto più probabile che uniforme. – ssube

+0

Quindi, vuoi una distribuzione normale o una distribuzione uniforme? Quei due sono completamente diversi. – svick

+0

Voglio una distribuzione uniforme, ovviamente. Come puoi vedere, sto già diventando normale. @ peachykeen Dove l'ho fatto? Inoltre, come detto, la distribuzione non è normale secondo il test di Lilliefors. – Superbest

risposta

Problemi correlati