1d linearer Wert Rauschen nicht gleichmäßige Verteilung; Gibt es eine bessere Rauschenfunktion?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 1d linearer Wert Rauschen nicht gleichmäßige Verteilung; Gibt es eine bessere Rauschenfunktion?

Post by Anonymous »

Ich habe hier eine einfache 1D -Wert -Rauschfunktion: < /p>

Code: Select all

public float ValueNoise1D(float x)
{
int l = Mathf.FloorToInt(x);
int r = l + 1;

float vl = hashToFloat(hash(l));

float vr = hashToFloat(hash(r));

float lerp = Mathf.InverseLerp(l, r, x);

return Mathf.Lerp(vl, vr, lerp);
}
//Based on Murmur3
int hash(int key)
{
uint k = (uint)key;
k += 0x7ed55d16;
k ^= k >> 16;
k *= 0x85ebca6b;
k ^= k >> 13;
k *= 0xc2b2ae35;
k ^= k >> 16;
return (int)(k & 0x7fffffff);
}
float hashToFloat(int hash)
{
return hash / (float)0x80000000;
}
Durch das Testen scheint die Funktion der Wahrscheinlichkeitsdichte diese Form zu sein:

Ein Beispiel ist Regen. Wenn Regen an einem bestimmten Tag eine 30% ige Chance hat, können Sie einen einheitlichen Wert V mit der Wahrscheinlichkeit P abziehen und prüfen, ob er weniger als 0 ist, d. H. V-P < /ol>
Eine Option kann versuchen, eine inverse kumulative Verteilungsfunktion zu berechnen, um den Ausgang so einheitlich zu machen, aber ich weiß nicht, wo ich überhaupt anfangen soll, dies zu berechnen. Dazu. Perlin und Simplex -Rauschen sind an allen Punkten kontinuierlich. Ohne zu interpolieren würde es einen plötzlichen Sprung mit dem wahrgenommenen Wert geben. Das Interpolieren zwischen zwei zufälligen Werten ist jedoch genau das, was die Wahrscheinlichkeitsverteilungsfunktion zu einem bestimmten Zeitpunkt ungleichmäßig verursacht. möglich. Jede Hilfe wäre geschätzt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post