سؤال

أحاول تنفيذ توزيع الاحتمالات غير الموحد في الخوارزمية الوراثية.

في تنفيذ البرنامج الوراثي ، لدي تجربة لها 3 نتائج ، حيث يكون لكل نتيجة احتمالات مختلفة. دعنا أقول ، احتمالية واحدة نتيجة هي 0.85 ، والآخر هو 0.01 والأخير هو 0.14؟

ملاحظة: لقد عرفت مؤخرًا أنه يسمى التوزيع غير الموحد للاحتمال. أنا أقوم بتنفيذها في Java ، هل يمكن لأي شخص أن يخبر النظرية الكامنة وراء Prob غير الموحدة. التوزيع وأي أيضًا أي حزم Java تنفذها.

لا تتردد في أن تسألني ، إذا كنت بحاجة إلى مزيد من المعلومات حول المشكلة!

شكرا مقدما!

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

المحلول

للحصول على توزيع منفصل بسيط ، يمكنك كتابة عينة من سيعيد نتائجك مع التردد المطلوب باستخدام الاحتمالات التراكمية.

Random r = new Random();
double v = r.nextDouble();

if (v <= 0.85) { return 0; }
if (v <= 0.86) { return 1; }
return 2;

سيؤدي ذلك إلى إرجاع الأرقام 0 و 1 و 2 باحتمال 0.85 و 0.01 و 0.14.

بقدر النظرية المتعلقة بتوزيعات الاحتمالات غير الموحدة ، يمكنك البدء بمقالة ويكيبيديا هذه توزيعات الاحتمالات; ؛ قم بتدوين خاص للأقسام القابلة للطي في أسفل الصفحة. ستجد أن هناك العشرات من التوزيع غير الموحد (المستمر والمنفصل) مع خصائص مختلفة.

نصائح أخرى

في حالتك الخاصة ، من الأفضل الحصول على قيمة عشوائية في [0 ؛ 100) باستخدام توزيع موحد ثم تحقق من النطاق الذي يقع فيه: [0 ؛ 85) ، [85 ؛ 99) ، [99 ، 100)

بناءً على وصفك ، يبدو لي أنك تتحدث عن اختيار اللياقة البدنية (المعروف أيضًا باسم اختيار عجلة الروليت).
http://en.wikipedia.org/wiki/Roulette-Wheel_selection

أعتقد أن إجابة Nailxx هي وصف مضغوط إلى حد ما ما عليك القيام به.

أنظر أيضااختيار الروليت في الخوارزميات الوراثية
خوارزمية اختيار عجلة الروليت

إذا كنت مخطئًا ، فهناك بعض المكتبات التي قد تجدها مفيدة:
http://www.ee.ucl.ac.uk/~mflanaga/java/stat.html
http://commons.apache.org/math/apidocs/org/apache/commons/math/random/package-summary.html

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