次のコードは、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;
}