في جافا البرمجة، ونحن في كثير من الأحيان المطلوبة لذلك توليد أرقام عشوائية بينما نقوم بتطوير التطبيقات. العديد من التطبيقات لديها هذه الميزة توليد الأرقام بشكل عشوائي ، مثل التحقق من المستخدم الذي تستخدمه العديد من التطبيقات مكتب المدعي العام . أفضل مثال على الأرقام العشوائية هو النرد. لأننا عندما نرميها نحصل على رقم عشوائي بين 1 إلى 6.
في هذا القسم سوف نتعلم ما هو رقم عشوائي و كيفية توليد أرقام عشوائية في جافا .
رقم عشوائي
الأرقام العشوائية هي الأرقام التي تستخدم مجموعة كبيرة من الأرقام ويتم تحديد رقم باستخدام الخوارزمية الرياضية. وهو يحقق الشرطين التاليين:
- القيم التي تم إنشاؤها موزعة بشكل موحد على فترة زمنية محددة.
- من المستحيل تخمين القيمة المستقبلية بناءً على القيم الحالية والسابقة.
توليد رقم عشوائي في جافا
في Java، هناك ثلاث طرق لإنشاء أرقام عشوائية باستخدام الطريقة والفئات.
- باستخدام عشوائي() طريقة
- باستخدام عشوائي فصل
- باستخدام ThreadLocalRandom فصل
- باستخدام كثافة العمليات () الطريقة (في Java 8)
باستخدام طريقة Math.random()
جافا الرياضيات يحتوي الفصل على العديد من الطرق للعمليات الرياضية المختلفة. واحد منهم هو عشوائي() طريقة. إنها ثابتة طريقة فئة الرياضيات. يمكننا استدعاؤه مباشرة. يولد فقط مزدوج اكتب رقم عشوائي أكبر من أو يساوي 0.0 و أقل من 1.0 . قبل استخدام الطريقة العشوائية()، يجب علينا استيراد ملفjava.lang.Mathفصل.
بناء الجملة:
public static double random()
لا يقبل أي معلمة. تقوم بإرجاع مضاعفة عشوائية زائفة أكبر من أو تساوي 0.0 وأقل من 1.0.
لنقم بإنشاء برنامج يقوم بإنشاء أرقام عشوائية باستخدام الطريقة العشوائية ().
RandomNumberExample1.java
import java.lang.Math; public class RandomNumberExample1 { public static void main(String args[]) { // Generating random numbers System.out.println('1st Random Number: ' + Math.random()); System.out.println('2nd Random Number: ' + Math.random()); System.out.println('3rd Random Number: ' + Math.random()); System.out.println('4th Random Number: ' + Math.random()); } }
انتاج:
1st Random Number: 0.17434160924512265 2nd Random Number: 0.4297410090709448 3rd Random Number: 0.4828656381344487 4th Random Number: 0.13267917059488898
يتذكر: في كل مرة نحصل على مخرجات مختلفة عندما نقوم بتنفيذ البرنامج. قد يختلف مخرجاتك عن المخرجات الموضحة أعلاه.
يمكننا أيضًا استخدام الصيغة التالية إذا أردنا إنشاء رقم عشوائي بين نطاق محدد.
Math.random() * (max - min + 1) + min
في الصيغة أعلاه، تكون القيمة الدنيا شاملة بينما تكون القيمة القصوى حصرية.
لنقم بإنشاء برنامج يقوم بإنشاء أرقام عشوائية بين 200 إلى 400.
الفول السوداني مقابل الفول السوداني
RandomNumberExample2.java
public class RandomNumberExample2 { public static void main( String args[] ) { int min = 200; int max = 400; //Generate random double value from 200 to 400 System.out.println('Random value of type double between '+min+' to '+max+ ':'); double a = Math.random()*(max-min+1)+min; System.out.println(a); //Generate random int value from 200 to 400 System.out.println('Random value of type int between '+min+' to '+max+ ':'); int b = (int)(Math.random()*(max-min+1)+min); System.out.println(b); } }
الإخراج 1:
Random value of type double between 200 to 400: 233.88329802655377 Random value of type int between 200 to 400: 329
الإخراج 2:
Random value of type double between 200 to 400: 254.8419979875385 Random value of type int between 200 to 400: 284
باستخدام فئة عشوائية
هناك طريقة أخرى لإنشاء رقم عشوائي وهي استخدام جافا عشوائي فصل التابعjava.utilطَرد. فهو يولد دفقًا من الأرقام العشوائية الزائفة. يمكننا إنشاء رقم عشوائي لأي نوع بيانات، مثل عدد صحيح أو عائم أو مزدوج أو منطقي أو طويل. إذا كنت ستستخدم هذه الفئة لإنشاء أرقام عشوائية، فاتبع الخطوات الواردة أدناه:
- أولاً، قم باستيراد الفصلjava.lang.Random.
- يخترع هدف من الطبقة العشوائية
- استدعاء أي من الطرق التالية:
تقوم جميع الطرق المذكورة أعلاه بإرجاع القيمة العشوائية الزائفة التالية الموزعة بشكل متجانس (الطريقة المقابلة) من تسلسل مولد الأرقام العشوائي هذا. ال التالي مزدوج () و nextFloat() تولد الطريقة قيمة عشوائية بين 0.0 و 1.0.
ال nextInt (كثافة العمليات منضم) تقبل الطريقة معلمة منضمة (علوية) يجب أن تكون موجبة. يقوم بإنشاء رقم عشوائي في النطاق من 0 إلى منضم 1.
لنقم بإنشاء برنامج يقوم بإنشاء أرقام عشوائية باستخدام فئة Random.
RandomNumberExample3.java
import java.util.Random; public class RandomNumberExample3 { public static void main(String args[]) { // creating an object of Random class Random random = new Random(); // Generates random integers 0 to 49 int x = random.nextInt(50); // Generates random integers 0 to 999 int y = random.nextInt(1000); // Prints random integer values System.out.println('Randomly Generated Integers Values'); System.out.println(x); System.out.println(y); // Generates Random doubles values double a = random.nextDouble(); double b = random.nextDouble(); // Prints random double values System.out.println('Randomly Generated Double Values'); System.out.println(a); System.out.println(b); // Generates Random float values float f=random.nextFloat(); float i=random.nextFloat(); // Prints random float values System.out.println('Randomly Generated Float Values'); System.out.println(f); System.out.println(i); // Generates Random Long values long p = random.nextLong(); long q = random.nextLong(); // Prints random long values System.out.println('Randomly Generated Long Values'); System.out.println(p); System.out.println(q); // Generates Random boolean values boolean m=random.nextBoolean(); boolean n=random.nextBoolean(); // Prints random boolean values System.out.println('Randomly Generated Boolean Values'); System.out.println(m); System.out.println(n); } }
انتاج:
Randomly Generated Integers Values 23 767 Randomly Generated Double Values 0.37823814494212016 0.998058172671956 Randomly Generated Float Values 0.87804186 0.93880254 Randomly Generated Long Values -4974823544291679198 3650240138416076693 Randomly Generated Boolean Values false true
باستخدام فئة ThreadLocalRandom
ال ThreadLocalRandom يتم تعريف الفئة فيjava.util.concurrentطَرد. تتم تهيئته باستخدام بذرة تم إنشاؤها داخليًا، مثل المولد العشوائي لفئة الرياضيات. لا يمكن تعديله. يمكننا استخدام هذا الفصل بالطريقة التالية:
ThreadLocalRandom.current().nextX(...)
حيث X هي Int وLong وما إلى ذلك.
ملاحظة: من المستحيل مشاركة ThreadLocalRandom مع عدة سلاسل رسائل عن طريق الخطأ.
يمكننا إنشاء رقم عشوائي لأي نوع بيانات، مثل عدد صحيح أو عائم أو مزدوج أو منطقي أو طويل. إذا كنت ستستخدم هذه الفئة لإنشاء أرقام عشوائية، فاتبع الخطوات الواردة أدناه:
- أولاً، قم باستيراد الفصل باستخدامjava.util.concurrent.ThreadLocalRandom.
- قم باستدعاء الطريقة المقابلة التي تريد إنشاء أرقام لها بشكل عشوائي.
تتجاوز جميع الطرق المذكورة أعلاه الطريقة المقابلة للفئة العشوائية وترجع القيمة المقابلة.
الطرق المذكورة أعلاه تحليل معلمة مرتبط ب (العلوي) الذي يجب أن يكون إيجابي . تقوم بإرجاع القيمة المطابقة التي تم إنشاؤها عشوائيًا بين 0 (شاملاً) والحد المحدد (حصريًا). يرمي IllegalArgumentExcetion إذا كان الحد سلبيا.
الطرق المذكورة أعلاه تحلل معلمتين أصل و مرتبط ب . الأصل يحدد الأقل قيمة عاد ويحدد المنضم الحد الاعلى . تقوم بإرجاع القيمة المقابلة التي تم إنشاؤها بشكل عشوائي بين الأصل المحدد (الشامل) والمنضم (الحصري). وأيضا رميات IllegalArgumentExcetion إذا كان الأصل أكبر من أو يساوي الحد.
لنقم بإنشاء برنامج يقوم بإنشاء أرقام عشوائية باستخدام فئة ThreadLocalRandom .
RandomNumberExample4.java
import java.util.concurrent.ThreadLocalRandom; public class RandomNumberExample4 { public static void main(String args[]) { // Generate random integers between 0 to 999 int a = ThreadLocalRandom.current().nextInt(); int b = ThreadLocalRandom.current().nextInt(); // Print random integer values System.out.println('Randomly Generated Integer Values:'); System.out.println(a); System.out.println(b); // Generate Random double values double c = ThreadLocalRandom.current().nextDouble(); double d = ThreadLocalRandom.current().nextDouble(); // Print random doubles System.out.println('Randomly Generated Double Values:'); System.out.println(c); System.out.println(d); // Generate random boolean values boolean e = ThreadLocalRandom.current().nextBoolean(); boolean f = ThreadLocalRandom.current().nextBoolean(); // Print random Booleans System.out.println('Randomly Generated Boolean Values:'); System.out.println(e); System.out.println(f); } }
الإخراج 1:
Randomly Generated Integer Values: 348534891 -1887936727 Randomly Generated Double Values: 0.15644440033119833 0.5242730752133399 Randomly Generated Boolean Values: true true
الإخراج 2:
Output 2: Randomly Generated Integer Values: 402755574 295398333 Randomly Generated Double Values: 0.4856461791062565 0.5148677091077654 Randomly Generated Boolean Values: false true
وبالمثل، يمكننا استخدام طرق أخرى ل ThreadLocalRandomclass .
إنشاء أرقام عشوائية في Java 8
في Java 8، تمت إضافة طريقة جديدة ints() إلى ملف فئة عشوائية . يجب علينا استيرادjava.util.Randomقبل استخدام الطريقة.
كثافة العمليات ():
تم إنشاء قيم int العشوائية الزائفة بنفس طريقة استدعاء الأسلوب nextInt(). تقوم بإرجاع دفق غير محدود من قيم int العشوائية الزائفة.
ints (حجم الدفق الطويل):
تقوم الطريقة بتوزيع المعلمة StreamSize من النوع الطويل. ويحدد عدد القيم التي سيتم إنشاؤها. تم إنشاء قيم int العشوائية الزائفة بنفس طريقة استدعاء الأسلوب nextInt(). كما تقوم أيضًا بإرجاع دفق من قيم int التي تم إنشاؤها عشوائيًا. يرمي غير الشرعيين استثناء حجة إذا كان حجم الدفق أقل من الصفر.
ints (حجم الدفق الطويل، int RandomNumberOrigin، int RandomNumberBound):
حدود:
تقوم بإرجاع دفق من قيم int العشوائية الزائفة ذات الأصل المحدد والربط. يرمي غير الشرعيين استثناء حجة لو:
- StramSize<0< li>
- الأصل > = منضم 0<>
ints(int randomNumberOrigin, int randomNumberBound):
حدود:
تقوم بإرجاع دفق غير محدود من قيم int العشوائية الزائفة مع الأصل المحدد والربط. يرمي غير الشرعيين استثناء حجة إذا كان الأصل أكبر من أو يساوي الحد.
وبالمثل، يمكننا أيضًا إنشاء دفق من الأنواع الطويلة والمزدوجة باستخدام التابع يشتاق () و الزوجي () الطريقة على التوالي.
لنقم بإنشاء برنامج يقوم بإنشاء دفق من الأعداد الصحيحة باستخدام كثافة العمليات () طريقة الطبقة العشوائية.
RandomNumberExample5.java
import java.util.Random; public class RandomNumberExample5 { public static void main(String[] args) { randomInts(5); randomInts(9, 50, 90); //getStreamOfRandomInts(30, 50); } //method that generates a stream of integers having size 5 public static void randomInts(int num) { Random random = new Random(); random.ints(num).forEach(System.out::println); } //method that generates a stream of 9 integers between 50 to 90 public static void randomInts(int num, int origin, int bound) { Random random1 = new Random(); random1.ints(num, origin, bound).forEach(System.out::println); } }
الإخراج 1:
727900357 -1073118456 306279822 370327182 1366265119 65 75 75 88 76 75 56 86 85
الإخراج 2:
-1338107947 -1698771421 594232770 -1224937976 -1625069815 56 69 67 87 64 52 72 75 76