على الرغم من تعيين بذرة الفئة العشوائية بقيمة محددة، فإن منشئ الأرقام العشوائية يعود باستمرار نفس الرقم. دعنا نستكشف الأسباب التي يمكن أن تسبب هذه المشكلة.
تم تصميم فئة Java Random لإنشاء أرقام عشوائية زائفة. بشكل افتراضي، يستخدم ساعته الداخلية كقيمة أولية، مما يؤدي إلى إنشاء تسلسل من الأرقام يمكن التنبؤ به نسبيًا. لتخصيص التسلسل، يمكنك تعيين بذرة بشكل صريح باستخدام طريقة setSeed().
البذرة هي قيمة عددية تستخدم لتهيئة الحالة الداخلية لمولد الأرقام العشوائية. تحدد هذه الحالة تسلسل الأرقام التي تم إنشاؤها.
في الكود المقدم، أنت تقوم بإنشاء مثيل جديد لـ Random ضمن الأسلوب Random (). هذا يعني أنه في كل مرة تقوم فيها باستدعاء Random()، يتم تعيين بذرة جديدة، مما يؤدي بشكل فعال إلى تجاوز قيمة البذرة المحددة مسبقًا.
لحل هذه المشكلة، تحتاج إلى مشاركة المثيل العشوائي عبر الفصل بأكمله. من خلال إنشاء مثيل واحد وتعيين البذرة مرة واحدة عند تهيئة الفصل، فإنك تضمن إنشاء نفس التسلسل من الأرقام بشكل متسق.
الكود المحدث التالي يحل المشكلة:
public class Numbers { private Random randnum; public Numbers() { randnum = new Random(); randnum.setSeed(123456789); } public int random(int i) { return randnum.nextInt(i); } }
في هذا الكود المحدث:
من خلال إجراء هذه التغييرات، سوف تحصل الآن على أرقام عشوائية مختلفة عند استدعاء Random() من أجزاء مختلفة من برنامجك، مع احترام القيمة الأولية المحددة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3