雜訊筆記 1 隨機值和白雜訊

2021-08-31 16:18:42 字數 2104 閱讀 2328

雜訊其實就是程式中的一些隨機變數,所以想要生成雜訊就先要有乙個能夠生成(偽)隨機數的方法

hash函式是可以用來生成隨機數 而且很常用,他會根據輸入的種子數生成並返回對應的隨機數,在圖形學中,通常返回0-1

常用hash函式

·直接取餘法:f(x):= x mod maxm ; maxm一般是不太接近 2^t 的乙個質數。

·乘法取整法:f(x):=trunc((x/maxx)*maxlongit) mod maxm,主要用於實數。

·平方取中法:f(x):=(x*x div 1000 ) mod 1000000); 平方後取中間的,每位包含資訊比較多

先來乙個最簡單地函式,修改p值來觀察影象

可以看到p=100000時已經很難直接判斷每個x對應的y值了,通過fract函式不停的將數值打碎在[0,1]之間,就有了隨機值的感覺

基於這個可以延展至二維、三維向量。

float hash (vec2 p)

vec3 hash( vec3 p )

通過點乘(dot)二、三維向量可以得到乙個[0,1]的一維浮點值,這樣就把問題變成了根據乙個種子求乙個隨機值,也就是一維的求隨機值。

線性同餘發生器(lcg) :n(i) = (a*n(i-1)+c) % m

進製相乘法(multiply with carry mwc)

線性反饋移位暫存器法(linear feedback shift register,lfsr)

斐波那契lfsr(fabonacci lfsr)

伽羅華lfsr(galois lfsr)

mersenne twister(mt)

知道了怎麼得到隨機值,就等於知道了怎麼生成白雜訊,白雜訊其實就是在二維向量得到隨機值

下面是unityshader的**

參考內容:

條件隨機場學習筆記(1)

1 離散馬爾科夫過程 該過程的特點是當前的狀態僅僅與它之前的乙個狀態有關。狀態轉移概率有兩個屬性,大於零,轉移矩陣的每乙個橫行加一起來和為1.2 隱馬爾科夫要素 五元組 兩個模型引數和三個概率矩陣。n 模型中狀態數 m 輸出字元的個數 a 狀態轉移概率分布 b 觀察字元在狀態j時的概率分布 初始狀態...

C 學習筆記 1 初識值型別

以前只是看看書 現在開始系統的學習c 並好好做筆記 如有不足和錯誤請各位大大及時指出哦 所有的值型別均隱式派生自 system.valuetype 每種值型別均有乙個隱式的預設建構函式來初始化該型別的預設值。值型別有三種,分為 列舉 結構體 簡單值型別。呼叫時候的關鍵字為enum,例如 enum f...

scss值列表 SCSS筆記1 變數

名詞解釋 li 包起來,表示這是個變數名。字串變數 變數的值如果是字串,一定要用單引號引起來,儘管不引起來也不會出錯。單引號引起來是為了能一眼認出這是變數的值而且是字串值,而不是普通屬性的值。唯一例外是css中類似initial或sans serif的識別符號無須引用起來。乙個最典型的例子 bord...