توليد سلسلة أرقام عشوائية هي واحدة من تلك المهام الشائعة التي تنشأ من وقت لآخر. في جافا، يمكن تحقيق ذلك ببساطة باستخدام java.util. فئة عشوائية.
الخطوة الأولى ، كما هو الحال مع استخدام أي API صف دراسي، هو وضع عبارة الاستيراد قبل بدء فصل البرنامج الخاص بك:
بعد ذلك ، قم بإنشاء كائن عشوائي:
يوفر لك الكائن العشوائي مولد رقم عشوائي بسيط. تعطي أساليب الكائن القدرة على اختيار أرقام عشوائية. على سبيل المثال ، ستعرض طريقتا nextInt () و nextLong () رقماً ضمن نطاق القيم (السلبية والإيجابية) لأنواع البيانات int و long على التوالي:
سيتم اختيار الأرقام التي يتم إرجاعها بشكل عشوائي القيم الدولية والطويلة:
اختيار أرقام عشوائية من نطاق معين
عادة ، يجب أن تكون الأرقام العشوائية التي يتم إنشاؤها من نطاق معين (على سبيل المثال ، من 1 إلى 40 بشكل شامل). لهذا الغرض ، يمكن أن يقبل الأسلوب nextInt () أيضًا معلمة int. يشير إلى الحد الأعلى لنطاق الأرقام. ومع ذلك ، لا يتم تضمين رقم الحد الأعلى كأحد الأرقام التي يمكن اختيارها. قد يبدو هذا مربكًا ولكن طريقة nextInt () تعمل من الصفر فصاعدًا. فمثلا:
سيختار فقط رقمًا عشوائيًا من 0 إلى 39 بشكل شامل. للاختيار من نطاق يبدأ بـ 1 ، ما عليك سوى إضافة 1 إلى نتيجة طريقة nextInt (). على سبيل المثال ، لاختيار رقم ما بين 1 إلى 40 ، قم بإضافة رقم إلى النتيجة بشكل شامل:
إذا بدأ النطاق من رقم أعلى من واحد ، فستحتاج إلى:
- ناقص رقم البداية من رقم الحد الأعلى ثم قم بإضافة رقم.
- أضف رقم البداية إلى نتيجة طريقة nextInt ().
على سبيل المثال ، لاختيار رقم من 5 إلى 35 بشكل شامل ، سيكون الحد الأعلى 35-5 + 1 = 31 ، ويجب إضافة 5 إلى النتيجة:
ما مدى عشوائية الفصل العشوائي؟
يجب أن أشير إلى أن فئة Random تولد أرقامًا عشوائية بطريقة حتمية. تعتمد الخوارزمية التي تنتج العشوائية على رقم يسمى البذرة. إذا كان رقم البذور معروفًا ، فمن الممكن معرفة الأرقام التي سيتم إنتاجها من الخوارزمية. لإثبات ذلك ، سأستخدم الأرقام من تاريخ ذلك نيل أرمسترونغ خطوت لأول مرة على القمر كرقم البذور (20 يوليو 1969):
بغض النظر عمن يقوم بتشغيل هذا الرمز ، فإن تسلسل الأرقام "العشوائية" المنتجة سيكون:
بشكل افتراضي ، رقم البذور المستخدم من قبل:
هو الوقت الحالي بالمللي ثانية منذ 1 يناير 1970. عادة ما ينتج هذا أرقامًا عشوائية بما يكفي لمعظم الأغراض. ومع ذلك ، لاحظ أن اثنين من مولدات الأرقام العشوائية التي تم إنشاؤها في نفس المللي ثانية ستولد نفس الأرقام العشوائية.
كن حذرًا أيضًا عند استخدام فئة Random لأي تطبيق يجب أن يكون لديه مولد رقم عشوائي آمن (على سبيل المثال ، برنامج قمار). قد يكون من الممكن تخمين الرقم الأولي بناءً على وقت تشغيل التطبيق. بشكل عام ، بالنسبة للتطبيقات التي تكون فيها الأرقام العشوائية بالغة الأهمية ، من الأفضل إيجاد بديل للكائن العشوائي. بالنسبة لمعظم التطبيقات التي تحتاج فقط إلى عنصر عشوائي معين (على سبيل المثال ، النرد لألعاب الطاولة) ، فإنه يعمل بشكل جيد.