C++ 如何在cuda中生成伪随机数

C++ 如何在cuda中生成伪随机数,c++,random,cuda,gpgpu,C++,Random,Cuda,Gpgpu,我正试图建立一个粒子系统,利用CUDA来完成这项繁重的工作。我想随机化一些粒子的初始值,比如速度和寿命。随机数不一定是超级随机的,因为它只是为了视觉效果。我发现这篇文章的主题是相同的: 这表明线性全等式是可行的。看起来它应该很容易实现,但是我很难从我的实现中得到任何有用的东西。有人能提供一些将在设备中运行的代码吗 我在Windows 7 64位上用VC++的CUDA。CUDA伪随机数生成器是 >P> >包括英伟达SDK EG C/SRC/MelSeNeWiste/和 C/SRC/准RANDAN

我正试图建立一个粒子系统,利用CUDA来完成这项繁重的工作。我想随机化一些粒子的初始值,比如速度和寿命。随机数不一定是超级随机的,因为它只是为了视觉效果。我发现这篇文章的主题是相同的:

这表明线性全等式是可行的。看起来它应该很容易实现,但是我很难从我的实现中得到任何有用的东西。有人能提供一些将在设备中运行的代码吗


我在Windows 7 64位上用VC++的CUDA。

CUDA伪随机数生成器是

>P> >包括英伟达SDK EG<代码> C/SRC/MelSeNeWiste/<代码>和<代码> C/SRC/准RANDANGMENGUDS< /COD>

  • 可作为单独的文件和来源提供:

    2.a及

    2.b


  • CUDA伪随机数生成器是

    >P> >包括英伟达SDK EG<代码> C/SRC/MelSeNeWiste/<代码>和<代码> C/SRC/准RANDANGMENGUDS< /COD>

  • 可作为单独的文件和来源提供:

    2.a及

    2.b


  • 根据您的需求,有许多开源选项。还有一些商业选择,例如谁实施了l'Ecuyer的MRG32k3a。如果您需要确保流不相关,请小心使用LCG-您可以使用蛙跳/分割,但需要很长的时间

    <>如果你想去开源,那么你一定要考虑使用它的简单性。在英伟达SDK中也有一些RNG,包括MelShan-Trwitter PRNG样本(MT607,MT937在论坛)和SOBOL和Niederreiter QRNGs。
    最后,还有一个随机数生成器。

    根据您的需求,有许多开源选项。还有一些商业选择,例如谁实施了l'Ecuyer的MRG32k3a。如果您需要确保流不相关,请小心使用LCG-您可以使用蛙跳/分割,但需要很长的时间

    <>如果你想去开源,那么你一定要考虑使用它的简单性。在英伟达SDK中也有一些RNG,包括MelShan-Trwitter PRNG样本(MT607,MT937在论坛)和SOBOL和Niederreiter QRNGs。
    最后,还有一个随机数生成器。

    到底是什么问题?线性同余生成器代码是Q=(Q*a)+b,Q是所讨论的随机数。常量a和b在不同的实现中有所不同——您可以在中找到一些流行的组合,因为请求源代码被认为是公然冒犯。一个更好的窍门是发布一些(即使是最基本的,如果你愿意的话)你已经激发了自己来吸引人们的兴趣!并且,总是要解释,为什么,在哪里,以及你在实现哪一部分时遇到了困难。直接的:为什么要求代码(特别是可能少了十几行的代码)是公然的冒犯?明戈斯:问题是我需要在设备中生成随机数,而我不知道如何生成它们。线性同余的方法是什么?有更好的吗?如果线性同余是一种方法,那么如何在CUDA中实现呢?哦,那么要求它是在GPU中计算的?好吧,我的错。LCG是最快但质量较低的随机数。如果可能的话,我会使用另一种快速算法,但具有更高的周期和随机数质量,如带进位的互补乘法、广义反馈移位寄存器或Mersenne Twister。我不知道CUDA的任何实现,抱歉…到底是什么问题?线性同余生成器代码是Q=(Q*a)+b,Q是所讨论的随机数。常量a和b在不同的实现中有所不同——您可以在中找到一些流行的组合,因为请求源代码被认为是公然冒犯。一个更好的窍门是发布一些(即使是最基本的,如果你愿意的话)你已经激发了自己来吸引人们的兴趣!并且,总是要解释,为什么,在哪里,以及你在实现哪一部分时遇到了困难。直接的:为什么要求代码(特别是可能少了十几行的代码)是公然的冒犯?明戈斯:问题是我需要在设备中生成随机数,而我不知道如何生成它们。线性同余的方法是什么?有更好的吗?如果线性同余是一种方法,那么如何在CUDA中实现呢?哦,那么要求它是在GPU中计算的?好吧,我的错。LCG是最快但质量较低的随机数。如果可能的话,我会使用另一种快速算法,但具有更高的周期和随机数质量,如带进位的互补乘法、广义反馈移位寄存器或Mersenne Twister。我不知道CUDA的任何实现,抱歉。。。