超新手求助最大值问题
cuda吧
全部回复
仅看楼主
level 1
double r1 = ((double)rand()) / (RAND_MAX + 1.0);
这句话的意思是随机数除以(随机数最大值+1),得到0-1的随机数。那么在设备端怎么得到呢?
size_t i;
curandGenerator_t gen;
float *devData;
/* Allocate n floats on device */
cudaMalloc((void **)&devData, abc*sizeof(float));
/* Create pseudo-random number generator */
curandCreateGenerator(&gen,CURAND_RNG_PSEUDO_DEFAULT);
/* Set seed */
curandSetPseudoRandomGeneratorSeed(gen,1234ULL);
/* Generate n floats on device */
curandGenerateUniform(gen, devData, abc);
我用这段生成了随机数,怎么得到0-1的随机,cuda是否有和rand_max对应的?
还有:rand_max是不是固定的一个数?随机数能产生的数范围是【0,32767】,随机数最大值不是32767?
2018年05月04日 06点05分 1
level 1
不对,应该是随机数问题
2018年05月04日 06点05分 2
level 4
curandGenerate生成32位随机数,curandGenerateUniform生成(0, 1]的浮点数。头文件里写的很清楚啊。
RAND_MAX是C语言标准库的东西,表示rand()返回的最大值,原则上不是一个固定的数,虽然一般都是32767。和别的环境没有关系。
2018年05月10日 11点05分 3
1