使CURAND生成小于特定数字的正的不同随机数



我正在尝试使用CURAND库来生成彼此完全独立的随机数。因此,我想给每根线不同的种子。那么,问题1:我如何给每条线不同的种子?(CUDA中有我可以使用的时间功能吗?)

现在我也想生成这个介于0到10000之间的随机数。我该如何做到这一点。

目前我使用curand_normal(因为我想得到正态分布中的数字),但它给了我负数和相同的数字,这是我不想要的。

设置不同的种子在统计上不是获得独立(非相关)随机数(使用任何单个随机数生成器)的可靠方法。您最好选择单个序列的不同子序列,大多数随机数库都允许您这样做,包括cuRAND。

查看CUDA SDK中的示例,例如EstimatePiP或EstimatePiInlineP示例使用cuRAND生成伪随机数。

对于问题的第二部分,如cuRAND手册中所述,curand_normal()例程返回平均值为0.0、标准偏差为1.0的正态分布数字(即标准正态分布)。很明显,这意味着你将有大约50%的负数。

将固定范围与正态分布一起指定是没有意义的。您要么想要具有固定范围的其他分布(例如均匀分布),要么想要具有特定平均值和标准分布的正态分布。要从标准法线获得目标均值/std.dev,只需将随机抽取值乘以目标标准偏差,再加上目标均值。

相关内容

最新更新