أنت تبحث عن طريقة لتوليد أرقام عشوائية موحدة ضمن نطاق محدد [دقيقة، كحد أقصى].
عيوب في rand
قد لا يضمن تطبيقك الحالي باستخدام rand() ومشغل المعامل التوزيع الموحد، لأن سلوكه يعتمد على RAND_MAX والنطاق نفسه.
C 11 وتوليد النطاق الموحد
في C 11، std::uniform_int_distribution يقدم حلاً مصممًا خصيصًا لهذه الحاجة:
#includestd::uniform_int_distribution distr(min, max); std::random_device rand_dev; std::mt19937 generator(rand_dev()); int random_number = distr(generator);
ميزات إضافية لـ
يوفر الرأس
خلط الحاويات
إلى خلط حاوية، استخدم std::shuffle:#include#include#include std::vector vec = {4, 8, 15, 16, 23, 42}; std::random_device random_dev; std::mt19937 generator(random_dev()); std::shuffle(vec.begin(), vec.end(), generator);
Boost.Random
إذا كان استخدام مترجم C 11 غير ممكن ، فكر في Boost.Random، الذي يتميز بواجهة مشابهة لنظيره C 11.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3