"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا أحصل على أرقام عشوائية متطابقة عند استخدام نفس البذرة في Java؟

لماذا أحصل على أرقام عشوائية متطابقة عند استخدام نفس البذرة في Java؟

تم النشر بتاريخ 2024-11-09
تصفح:716

Why do I get identical random numbers when using the same seed in Java?

أرقام Java العشوائية مع البذور الثابتة: لماذا المخرجات المتطابقة؟

في التعليمات البرمجية الخاصة بك، قمت بتحديد طريقة لإنشاء أرقام عشوائية باستخدام بذرة محددة. ومع ذلك، لاحظت أنه عند تقديم نفس البذرة، تكون جميع الأرقام الـ 100 التي تم إنشاؤها متطابقة.

هذا السلوك متوقع لأن استخدام نفس البذرة في المُنشئ العشوائي يؤدي إلى تسلسل أرقام يمكن التنبؤ به. البذرة هي قيمة أولية تقوم بتهيئة مولد الأرقام العشوائية. هذه ميزة مهمة للاختبار، لأنها تسمح بالحصول على نتائج متسقة عند إعادة تشغيل الاختبارات.

فهم إنشاء الأرقام العشوائية الزائفة

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

إصلاح الكود

لإنشاء تسلسلات مختلفة من الأرقام العشوائية، يجب عليك تجنب استخدام نفس البذور في كل مرة. بدلاً من ذلك، أنشئ نسخة عشوائية خارج طريقتك وقم بتهيئتها بدون وسائط. سيستخدم هذا المثيل طريقة nanoTime لإنشاء قيمة أولية فريدة.

إليك الكود المصحح:

private Random generator = new Random();
double randomGenerator() {
    return generator.nextDouble() * 0.5;
}

مع هذا التغيير، ستحصل على تسلسلات مختلفة من الأرقام العشوائية في كل مرة تتصل فيها بطريقة RandomGenerator.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3