c# - شرح - random function in c++ example




توليد عدد عشوائي قوي (4)

احترس من مكتبة Gnu العلمية. مرخص بموجب ترخيص GPL بدلاً من LGPL.

كما ذكر آخرون ، تعتبر دروس Boost العشوائية بداية جيدة. يتوافق تنفيذها مع رمز PRNG المعين لـ TR1:

http://www.boost.org/doc/libs/1_35_0/libs/random/index.html http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1452.html

إذا كان لديك إصدار حديث من مترجم G ++ ، فقد تجد مكتبات TR1 مضمنة بالفعل

أنا أبحث عن أداء ، RNG قوية بشكل معقول باستخدام أي أجهزة خاصة. يمكن استخدام أساليب رياضية (Mersenne Twister ، الخ) ، يمكن أن "جمع الانتروبيا" من الجهاز ، أيا كان. في Linux / etc لدينا drand48() الذي يولد 48 بت عشوائية. أريد وظيفة / درجة مشابهة لـ C ++ أو C # والتي يمكن أن تولد أكثر من 32 بت من العشوائية وأي بت منخفضة الترتيب تكون عشوائية بالتساوي مثل البتات عالية الترتيب.

لا يلزم أن يكون آمنًا بشكل مشفّر ولكن يجب ألا يستخدم أو يعتمد على لغة rand() C-language rand() أو .NET System.Random .

سيكون موضع تقدير أي رمز المصدر ، وصلات لمصدر ، وما إلى ذلك! فشل ذلك ، ما نوع RNG الذي يجب أن أبحث عنه؟


اعتمدت C ++ 11 مكتبة أرقام عشوائية قوية تعتمد على boost.random. يمكنك الوصول إلى عدد من محركات الأرقام العشوائية باستخدام خوارزميات مختلفة لتلبية متطلبات الجودة والسرعة والحجم. ستوفر التطبيقات عالية الجودة إمكانية الوصول إلى كل ما هو غير std::random_device RNG الذي تقدمه std::random_device عبر std::random_device .

بالإضافة إلى ذلك ، هناك العديد من المحولات لإنتاج توزيعات محددة ، مما يلغي الحاجة إلى القيام بمثل هذا التلاعب باليد (غالباً ما يتم ذلك بشكل غير صحيح).

#include <random>


تحتوي مكتبة Gnu العلمية (GSL) على مجموعة واسعة جدًا من مولدات RN ، ومجموعات أدوات الاختبار ، وما إلى ذلك. إذا كنت تستخدم نظام Linux ، فمن المحتمل أن تكون متاحة بالفعل على نظامك.






random