-
Notifications
You must be signed in to change notification settings - Fork 10
Random Information
Hüseyin Tuğrul BÜYÜKIŞIK edited this page Oct 30, 2017
·
3 revisions
Just a random page containing random information to be used later. Don't read this page if you don't need random things.
uint wang_hash(uint seed)
{
seed = (seed ^ 61) ^ (seed >> 16);
seed *= 9;
seed = seed ^ (seed >> 4);
seed *= 0x27d4eb2d;
seed = seed ^ (seed >> 15);
return seed;
}
void wang_rnd_0(__global unsigned int * intSeeds,int id)
{
uint maxint=0;
maxint--;
uint rndint=wang_hash(id);
intSeeds[id]=rndint;
}
float wang_rnd(__global unsigned int * intSeeds,int id)
{
uint maxint=0;
maxint--;
uint rndint=wang_hash(intSeeds[id]);
intSeeds[id]=rndint;
return ((float)rndint)/(float)maxint;
}
// initialize each thread's own random number seed
__kernel void rnd_0(__global unsigned int * intSeeds)
{
int id=get_global_id(0);
wang_rnd_0(intSeeds,id);
}
// get a new random value by each thread
__kernel void rnd_1(__global unsigned int * intSeeds)
{
int id=get_global_id(0);
float randomFloat=wang_rnd(intSeeds,id);
}