نفس الأرقام العشوائية داخل تكرارات الحلقة
في حلقتك التي يتم تنفيذها 15 مرة، قمت باستدعاء dh.setDoors() في كل تكرار. داخل هذه الوظيفة، يتم استدعاء srand(time(0)) لبدء إنشاء أرقام عشوائية زائفة. ومع ذلك، فإن الاستدعاءات اللاحقة إلى rand() داخل الحلقة تؤدي إلى قيم ثابتة لـ carSetter وdeterer خلال جميع التكرارات الخمسة عشر.
يحدث هذا السلوك لأن srand(time(0)) يقوم بتعيين البذرة لمولد الأرقام العشوائية استنادًا إلى في الوقت الحالي. نظرًا لأن الحلقة يتم تنفيذها بسرعة، فإن time(0) يُرجع نفس القيمة في كل مرة، مما يؤدي إلى نفس التسلسل من الأرقام العشوائية الزائفة.
للتغلب على هذه المشكلة، يوصى باستدعاء srand(time(0) فقط )) مرة واحدة في بداية البرنامج، عادةً باتباع عملية مثل:
srand(time(0));
for (int i = 0; i من خلال إجراء هذه التهيئة مرة واحدة فقط، سيقوم مولد الأرقام العشوائية الزائفة بإنشاء تسلسل فريد من الأرقام لكل تكرار للحلقة، مما يؤدي إلى الاختلاف المتوقع في قيم carSetter وdetermer.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3