كيفية توليد الزائفة عشوائي في كودا
سؤال
أحاول بناء نظام الجسيمات باستخدام CUDA للقيام بالرفع الثقيل. أريد أن أشعل عشوائيا بعض القيم الأولية للجزيئات مثل السرعة والحياة. لا يجب أن تكون الأرقام العشوائية عشوائيا بشكل رائع لأنها مجرد تأثير مرئي. لقد وجدت هذا المنشور الذي يعالج نفس الموضوع:
التي تشير إلى التناظر الخطي هي الطريقة التي يجب أن تذهب. يبدو أنه ينبغي أن يكون بسيطا في التنفيذ، ولكن أواجه مشكلة في الحصول على أي شيء مفيد لتنفيذه. هل يمكن لأي شخص تقديم بعض الرمز الذي سيتم تشغيله في الجهاز؟
أنا أستخدم CUDA مع VC ++ على نظام التشغيل Windows 7 64bit.
المحلول
مولدات عدد عشوائي CUDA PSEDO
المدرجة في NVIDIA SDK على سبيل المثال
C/src/MersenneTwister/
وC/src/quasirandomGenerator
متاح كآلات منفصلة ومصدر:
نصائح أخرى
اعتمادا على متطلباتك هناك عدد من خيارات مفتوحة المصدر. هناك أيضا العديد من الخيارات التجارية مثل تذمر الذين نفذوا l'ecuyer's mrg32k3a. كن حذرا من استخدام LCG إذا كنت بحاجة إلى التأكد من عدم ترتيب تدفقاتك - يمكنك استخدام LeapFrog / تقسيم ولكن ستحتاج إلى فترة طويلة جدا!
إذا كنت ترغب في الانتقال إلى المصدر المفتوح، فعليك بالتأكيد النظر في استخدام دفع لأنه بساطة. هناك أيضا بعض RNGS في NVIDIA SDK، بما في ذلك عينة Mersenne Twister PRNG (MT607، MT19937 على المنتديات) و Sobol و NiederReiter Qrngs.
أخيرا، كودب يحتوي أيضا على مولد رقم عشوائي.