[Java] الطرق المختلفة لتوليد ارقام عشوائية فى الجافا random number by java

اذهب الى الأسفل

[Java]  الطرق المختلفة لتوليد ارقام عشوائية فى الجافا  random number by java Empty [Java] الطرق المختلفة لتوليد ارقام عشوائية فى الجافا random number by java

مُساهمة من طرف أحمد مناع في الإثنين فبراير 04, 2019 2:30 pm

أهلا بكم

الرقم العشوائي يعني رقمًا مختلفًا في كل مرة يتم فيها تنفيذ التطبيق وتوفر [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] العديد من الطرق لإنشاء أرقام عشوائية ضمن نطاق معين لذلك فى هذا المقال سوف نتعرف سويا على تلك الطرق و كيفية استخدامها :

الطريقة الاولى : توليد ارقام عشوائية باستخدام الفئة Random

توفر الفئة java.util.Random الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] التي يمكن أن تولد أرقام عشوائية فى نطاق رقم معين. حيث تأخذ هذه الطريقة عددًا صحيحًا كوسيطة. تمثل هذه القيمة الصحيحة الحد الأعلى للرقم العشوائي الذي سيتم إنشاؤه بواسطة هذه الطريقة ,تبدأ تلك الطريقة بتوليد رقم عشوائي من الرقم 0 حتى الحد الاعلى للرقم العشوائي الذى تم تمريرة اليها .

مثال : أكتب برنامج بلغة الجافا لتوليد ارقام عشوائية فى نطاق الرقم 50

الحل : لإنشاء رقم عشوائي بين 1 و 50 ، نقوم بإنشاء كائن من فئة java.util.Random واستدعاء طريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الخاصة به مع 50 كوسيطة. سيؤدي هذا إلى إنشاء رقم بين 0 و 49 لذلك سنقوم باضافة  الرقم 1 إلى النتيجة مما سيجعل نطاق القيمة التي تم إنشاؤها من 1 إلى 50...على النحو التالى :

الكود:

import java.util.Random;

public class test {
 
 public static void main(String[] args) {
 
 
 Random randomGenerator = new Random();
 int randomInt = randomGenerator.nextInt(50) + 1;
 System.out.println("Random number generated is : " + randomInt);
 }
}

المخرجات :
Random number generated is : 29


مثال : أكتب برنامج بلغة الجافا لتوليد عدد 5 أارقام عشوائية فى نطاق الرقم 50

الحل : فى هذا المثال طلب عدد 5 ارقام عشوائية و ليس رقم واحد كما فى المثال السابق لذلك سوف نستخدم حلقة تكرارية لتنفيذ المطلوب على النحو التالى :
الكود:

import java.util.Random;

public class test {
 
 public static void main(String[] args) {
 
 
 Random randomGenerator = new Random();
                for(int i = 0; i < 5; i++) {
                int randomInt = randomGenerator.nextInt(50) + 1;
 System.out.println("Random number generated is : " + randomInt);  
                }
 
 }
}

المخرجات :

Random number generated is : 20
Random number generated is : 26
Random number generated is : 44
Random number generated is : 7
Random number generated is : 3


الطريقة الثانية : توليد ارقام عشوائية باستخدام الفئة Math

يحتوي الفئة java.lang.Math على الطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الذي يولد قيمة عشرية من النوع [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] أكبر من 0.0 وأقل من 1.0 (0.9999) ، اذن النطاق الافتراضي لهذه الطريقة 0.0 حتى 1.0

مثال : أكتب برنامج بلغة الجافا لتوليد عدد 5 أارقام عشوائية

الحل :
الكود:

public class test {
 
 public static void main(String[] args) {
 
 
 
                for(int i = 0; i < 5; i++) {
                double randomDouble = Math.random();
 System.out.println("Random number generated is : " + randomDouble);  
               }
 
 }
}

المخرجات :

Random number generated is : 0.5399298565634371
Random number generated is : 0.3914851406177742
Random number generated is : 0.6582928867493553
Random number generated is : 0.02994586334518179
Random number generated is : 0.13342139597089198

وعلى الرغم من ان الطريقة اعلاه لها نطاق محدد لتوليد ارقام عشوائية باستخدامها الا انه يمكنك ضرب القيمة التي يتم إرجاعها بطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بمقدار الذى تريدة وهذا يجعل نطاقها من 0.0 حتى الرقم الذى وضعته

مثال :أكتب برنامج بلغة الجافا لتوليد عدد 5 أارقام عشوائية فى نطاق الرقم 50 باستخدام Math.random

الحل :من أجل توليد رقم يتراوح بين 1 إلى 50 ، نضرب القيمة التي يتم إرجاعها بطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بمقدار 50. وهذا يجعل نطاقها من 0.0 إلى 49.995 على النحو التالى :

الكود:

public class test {
 
 public static void main(String[] args) {
 
 
 
                for(int i = 0; i < 5; i++) {
                double randomDouble = Math.random()*50;
 System.out.println("Random number generated is : " + randomDouble);     
               }
 
 }
}

المخرجات :


Random number generated is : 36.098268352442915
Random number generated is : 37.77195830913475
Random number generated is : 46.46593180334226
Random number generated is : 3.1068847461841855
Random number generated is : 49.468128176594774


ولكن النتيجة السابقة ليست صحيحة 100% لانه عند ضرب القيمة التي يتم إرجاعها بطريقة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] بمقدار 50. هذا يجعل نطاقها من 0.0 إلى 49.995 و ليس من 0.0 الى 50
و لحل هذه المشكلة نقوم باضافة الرقم 1. هذا يزيد من نطاقه من 1.0 إلى 50.995. إذا تم إرسال هذه النتيجة إلى متغير من نوع [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ، فسيكون النطاق من 1 إلى 50 كما هو ظاهر على النحو التالى :

الكود:

public class test {
 
 public static void main(String[] args) {
 
 
 
                for(int i = 0; i < 5; i++) {
                double randomDouble = Math.random()*50+1;
                int no =( int )randomDouble;
 System.out.println("Random number generated is : " + no);  
               }
 
 }
}

و المخرجات على النحو التالى :

Random number generated is : 27
Random number generated is : 31
Random number generated is : 49
Random number generated is : 20
Random number generated is : 1


الطريقة الثالثة : توليد ارقام عشوائية باستخدام الفئة ThreadLocalRandom

قامت Java 7 بتوفير فئة جديدة تسمى java.util.concurrent.ThreadLocalRandom . يحتوي هذا الفصل على طرق لإنشاء أرقام عشوائية. هذه الفئة مناسبة لتوليد أرقام عشوائية في بيئات متعددة .

ThreadLocalRandom فئة ThreadLocalRandom على أسلوب [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] الذي يأخذ [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] يمثلان قيم الحدود الدنيا والعليا ويقوم بإرجاع عدد صحيح بين هذه القيم. ستكون النتيجة بين الحد الأدنى  والحد الأعلى .

مثال : لتوليد رقم بين 1 و 50 ، تكون الحدود الدنيا والعليا التي تم تمريرها إلى هذه الطريقة هي 1 و 51 على التوالي.

الكود:

import java.util.concurrent.ThreadLocalRandom;

public class test {
 
 public static void main(String[] args) {
 
 
         for(int i = 0; i < 5; i++) {
   int randomInt = ThreadLocalRandom.current().nextInt(1, 51);
 System.out.println("Random number generated is : " + randomInt);
                  
          }
 
 }
}

المخرجات :

Random number generated is : 20
Random number generated is : 5
Random number generated is : 3
Random number generated is : 26
Random number generated is : 48

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 975
النقاط : 201755
التقيم : 116
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى