我知道這可能是一個轉發,但我還沒有找到滿意的答案。使用cuRand從均勻分佈中生成隨機整數的正確方法是什麼?
我設法從範圍0到n
使用curand_uniform
實數生成整數,但我想知道是否有更好的方法來確保統計數字是統一分佈的。
__global__ void generate_kernel(int n, curandState *state, int *result)
{ int id = blockIdx.x * blockDim.x + threadIdx.x;
unsigned int x;
if (id < n)
{ curandState localState = state[id];
float aux = curand_uniform(&localState) * n;
x = aux ;
state[id] = localState;
result[id] = x;
}
}
那麼,有沒有我應該使用乘以n
的curand_uniform()
整數部分的一些其他的事情嗎?順便說一句,我有n
線程,每個線程都有自己的不同狀態和種子。每個線程生成一個值並將其保存在results
陣列上。