1

シンプルなオンライン OpenCL 数値ジェネレーターをオンラインで探しています。使いやすいものが見つかりません。

次のようなものが欲しい:

int generateRandomNumber(int fromNumber, int toNumber)
{
    int num = functionOfRandomness();
    return num;
}

2つの値の間で乱数を取得する方法の例を誰かが知っていれば、それは非常にありがたいです. 複雑なランダム システムである必要はありません。単純かつ迅速に機能するものだけです。

ありがとう

4

2 に答える 2

3

次のコードは、geeks3d の Real-Time OpenCL Path Tracer から抜粋しました。カーネルはプレーンテキストです。私が最初に OpenCL の使い方を学んだのは彼らのやり方です。

http://www.geeks3d.com/20120502/laguna-real-time-opencl-path-tracer/

float4 rand(uint2 *state)
{
    const float4 invMaxInt = (float4) (1.0f/4294967296.0f, 1.0f/4294967296.0f, 1.0f/4294967296.0f, 0);
    uint x = (*state).x * 17 + (*state).y * 13123;
    (*state).x = (x<<13) ^ x;
    (*state).y ^= (x<<7);

    uint4 tmp = (uint4)
    ( (x * (x * x * 15731 + 74323) + 871483),
      (x * (x * x * 13734 + 37828) + 234234),
      (x * (x * x * 11687 + 26461) + 137589), 0 );

    return convert_float4(tmp) * invMaxInt;
}
于 2013-04-18T08:24:03.527 に答える