LoginSignup
6
4

More than 5 years have passed since last update.

ComputeShaderで乱数の偏りを調べてみた

Posted at

経緯

よく使うお手軽GPU乱数実装でパーティクルの位置を計算したら結構偏ってたので、以前から気になってたXorwowと比べてみた

お手軽乱数実装

float randSimple(float2 v)
{
    return frac(sin(dot(v.xy, float2(12.9898, 78.233))) * 43758.5453);
}

普段は引数に時間などの値を混ぜて使っていたので問題なかったが
今回は同じシードから同じ状態になる再現性が欲しかったので出力を入力にフィードバックするような使い方をしてたところ
かなり偏るように見えた

環境

windows10
unity5.6.1f1

比較

上がお手軽乱数で、下がXorwow
1フレームに1回乱数を計算していて、白いラインがその値、1ピクセルずつ出現数分下に溜まっていくようにしています
思ってたよりもはるかに偏ってた!

ソース

Xorwowはnobnakさんのを使わせてもらいました
https://github.com/nobnak/XorwowUnity

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4