سؤال

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

فإنه لا يجب أن يكون آمن مشفر ولكن يجب أن لا تستخدم أو تكون على أساس C-اللغة rand() أو .صافي System.Random.

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

هل كانت مفيدة؟

المحلول

ل C++ ، دفعة.عشوائية ربما هو ما تبحث عنه.وقد دعم طن متري (من بين العديد من خوارزميات أخرى) ، يمكن جمع الكون عبر nondet_random فئة.التحقق من ذلك!:-)

نصائح أخرى

غنو المكتبة العلمية (GSL) لديها مجموعة واسعة جدا من RN مولدات اختبار تسخير, الخ.إذا كنت على لينكس, ربما المتاحة بالفعل على النظام الخاص بك.

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

كما غيرها من الناس ذكره ، زيادة عشوائية الطبقات هي بداية جيدة.تنفيذها يتوافق مع اللوائح رمز المقرر 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 المكتبات المدرجة بالفعل

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

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

#include <random>

Boost.Random هو خياري الأول RNG

http://www.boost.org/doc/libs/random

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top