البرمجة

توليد أرقام عشوائية في جافا سكريبت

عنوان:

لماذا يتم توليد رقم عشوائي دائمًا صفر في دالة الجافا سكريبت؟

المحتوى:

في دالة generateId التي كتبتها، تقوم بتوليد رقم عشوائي وإضافته إلى مصفوفة ids، ولكن الرقم الذي يتم توليده دائمًا هو الرقم صفر. هذا يحدث بسبب خطأ في شرط الـ if الخاص بك.

في السطر:

javascript
if(randomNum = ids.indexOf(randomNum))

تستخدم عملية الاستقصاء = بدلاً من عملية المقارنة == أو ===، مما يجعل الشرط يتم تقديم قيمة ids.indexOf(randomNum) إلى randomNum ويعيد القيمة الجديدة (التي عادة ما تكون 0 في حالة عدم وجود الرقم في المصفوفة)، لذلك يتم تنفيذ الشرط دائمًا وتُعيد الدالة نفس الرقم الذي تم توليده.

لحل هذه المشكلة، قم بتغيير الشرط إلى:

javascript
if(ids.includes(randomNum))

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

هناك أيضًا خطأ آخر في السطر:

javascript
ids.push[randomNum];

يجب استخدام القوسين ( ) بدلاً من الأقواس [ ] لأن push هو دالة لإضافة عنصر إلى نهاية المصفوفة، لذا يجب أن تكون الصيغة الصحيحة كالتالي:

javascript
ids.push(randomNum);

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

الختام:

باختصار، لا تنسى استخدام == أو === للمقارنة بين القيم في شروطك، واستخدم الأقواس ( ) بدلاً من الأقواس [ ] عند استدعاء دوال مثل push للمصفوفات في جافا سكريبت.

المزيد من المعلومات

التوضيحات الإضافية:

  1. Math.random(): تُستخدم دالة Math.random() في جافا سكريبت لتوليد عدد عشوائي بين 0 و1 (بما في ذلك 0 ولكن ليس 1).
  2. Math.floor(): تُستخدم دالة Math.floor() لتقريب العدد العشوائي الناتج إلى أقرب عدد صحيح أقل منه أو يساويه.
  3. indexOf(): دالة indexOf() تُستخدم للعثور على مؤشر الفهرس لأول حدوث للقيمة المحددة ضمن المصفوفة. إذا لم تجد القيمة، فإنها تعيد -1.
  4. includes(): دالة includes() تُستخدم للتحقق مما إذا كانت المصفوفة تحتوي على عنصر معين أم لا، وتعيد قيمة true إذا كانت المصفوفة تحتوي على العنصر و false إذا لم تكن تحتوي عليه.
  5. تكرار الدالة: باستدعاء generateId() مرة أخرى في حالة تكرار الرقم العشوائي، يتم ضمان توليد رقم جديد حتى يتم الحصول على رقم غير موجود في المصفوفة.

مثال على الحل:

هناك تعديلات صغيرة يجب إجراؤها على دالتك generateId() لتعمل بشكل صحيح. يمكنك استخدام الكود التالي:

javascript
function generateId() { var randomNum = Math.floor((Math.random() * 10) + 1); if(ids.includes(randomNum)) { return generateId(); } ids.push(randomNum); return randomNum; }

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

زر الذهاب إلى الأعلى