ایجاد عدد تصادفی

برای تولید عدد تصادفی در جاوا از کلاس Random که در پکیج java.util قرار دارد استفاده می شود. پس در ابتدای برنامه لازم است که این کلاس را import کنید :

import java.util.Random;

ساده ترین روش برای تولید اعداد تصادفی استفاده از متدهای ()nextInt() ،nextDouble و … است. برای این کار ابتدا یک شیء از کلاس Random می سازیم و سپس از متدهای مذکور برای تولید اعداد تصادفی استفاده می کنیم. به مثال زیر توجه کنید :

package program;

import java.util.Random;

public class Program 
{  
    public static void main(String[] args) 
    {  
        Random generator = new Random();

        boolean booleanValue = generator.nextBoolean();
        int     intValue     = generator.nextInt();    
        double  doubleValue  = generator.nextDouble(); 
        float   floatValue   = generator.nextFloat();  
       
        System.out.println(booleanValue);
        System.out.println(intValue);
        System.out.println(doubleValue);
        System.out.println(floatValue);
    }  
}
false
-240333896
0.07659793195249542
0.6878707

حال اگر برنامه بالا را چندین بار اجرا کنید نتیجه های مختلفی در خروجی مشاهده خواهید کرد. برای اینکه نحوه کار با این کلاس و متدهای آن را راحت درک کنید در مثال های بعدی با اعداد صحیح کار می کنیم. فرض می کنیم که شما می خواهید ده عدد از نوع int تولید کنید :

Random generator = new Random();

//Generate 10 random numbers
for (int i = 1; i <= 10; i++)
{
    System.out.println(generator.nextInt());
}
306495489
861232443
1265448050
-30370747
499374488
-1865142177
1196801248
-1061328848
62018178
1609249893

خروجی شما مطمئنا متفاوت است چون همه اعداد تصادفی می باشند. یکی دیکر از نسخه های متد ()nextInt به شما اجازه می دهد که تعدادی عدد تصادفی که کوچکتر از یک عدد خاص هستند، تولید کنید. فرض کنید که می خواهید یک عدد صحیح در یک بازه تولید کنید، مثلا عددی بین 0 و 4 (یعنی 0 و 4 هم جزء اعداد تولید شده باشند). برای این کار باید به صورت زیر عمل کنید :

Random generator = new Random();

//Generate 10 random numbers
for (int i = 1; i <= 10; i++)
{
    System.out.println(generator.nextInt(5));
}
1
4
1
0
3
1
4
4
4
0

همانطور که در مثال بالا مشاهده می کنید عدد 5 را به عنوان آرگومان به متد ()nextInt داده ایم و سپس با استفاده از حلقه for ده بار خروجی این متد را چاپ کرده ایم. مشاهده می کنید که عدد 5 هرگز چاپ نمی شود ، چون مقداری که این کلاس و متد ایجاد می کنند عددی بزرگتر مساوی با 0 و کوچکتر از 5 است نه خود عدد 5. پس برای اینکه عدد 5 هم چاپ شود باید به دو روش عمل کنیم، یا به جای عدد 5 عدد 6 را بنویسیم :

int intValue  = generator.nextInt(6);

یا به صورت زیر عمل کنیم :

Random generator = new Random();

//Generate 10 random numbers
for (int i = 1; i <= 10; i++)
{
    System.out.println(generator.nextInt(5) + 1);
}
3
1
1
4
2
3
4
2
5

کد بالا باعث تولید اعداد 1، 2، 3، 4 و 5 می شود. یعنی مفهوم کد بالا با اضافه کردن عدد 1 این است که کوچکترین عدد تولیدی 1 و بزرگترین عدد 5 باشد. حال فرض کنید به جای عدد 1 از عدد 2 یا عدد دیگر استفاده کنیم. در مثال زیر از عدد 2 استفاده می کنیم :

Random generator = new Random();

//Generate 10 random numbers
for (int i = 1; i <= 10; i++)
{
    System.out.println(generator.nextInt(5) + 2);
}

در کد بالا کوچکترین عدد تولیدی 2 و بزرگترین عدد تولید 1-(5+2) خواهد بود :

6
3
6
2
5
4
3
3
6
6

می توان از یک مقدار هم برای تولید یک توالی تکراری از اعداد تصادفی استفاده کرد.بدین معنی که با هر بار اجرای برنامه توالی و نوع اعداد تولید شده مانند سری قبلی باشد که برنامه اجرا شده است. این مقدار هر عددی می تواند باشد. برای اختصاص این مقدار باید آن را در داخل پرانتز سازنده کلاس Random قرار دهید.مانند عدد صفر در مثال زیر :

Random generator = new Random(0);

//Generate 10 random numbers
for (int i = 1; i <= 10; i++)
{
    System.out.println(generator.nextInt(5));
}
0
3
4
2
0
3
1
1
4
4

با هر بار اجرای برنامه بالا همین اعداد را مشاهده خواهید نمود.. حال اجازه بدهید که یک مثال ساده را توضیح دهیم. این برنامه پیغامهای متفاوتی در هر بار اجرای آن به شما نشان می دهد.

package program;

import java.util.Random;

public class Program 
{  
    public static void main(String[] args) 
    {        
        Random generator = new Random();

        int messageNumber = generator.nextInt(3) + 1;

        switch (messageNumber)
        {
            case 1:
                System.out.println("Hello to you my friend.");
                break;
            case 2:
                System.out.println("Good day to you sir/mam.");
                break;
            case 3:
                System.out.println("Have a happy day.");
                break;
        }           
    }  
}

برنامه مقادیر 1 تا 3 را تولید می کند. سپس با استفاده از دستور switch برای نشان دادن یک پیغام برای هر مقدار ممکن استفاده می کنیم. بعد از چندین بار اجرای برنامه متوجه می شوید که پیغام خوش آمد گویی تغییر می کند.