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

با استفاده از کلاس Random می‌توان اعداد تصادفی تولید کرد. این کلاس دارای متدهایی برای تولید عدد تصادفی می‌باشد. شانس آمدن هر عددی وجود دارد. می‌توان از متد ()Next یک عدد تصادفی مثبت مانند مثال زیر تولید کرد:

Random generator = new Random();

//Generate 10 random numbers
for (int i = 1; i <= 10; i++)
{
    Console.WriteLine(generator.Next());
}
673131583
2075827769
530790962
853400196
1181061071
1657679493
1459501829
452543008
1814178911
1933670708

خروجی شما مطمئناً متفاوت است چون همه اعداد تصادفی می‌باشند. یکی دیگر از نسخه‌های متد ()Next به شما اجازه می‌دهد که تعدادی عدد تصادفی را که از یک عدد خاص بزرگتر نباشند تولید کنید. این نسخه از متد همچنین باعث می‌شود که تعداد اعداد تولید شده از مقدار ذکر شده در پرانتز بیشتر نشود. به عنوان مثال برنامه زیر اعدادی را تولید می‌کند که نه مقدار آنها از 11 بیشتر است و نه تعداد آنها.

Random generator = new Random();

//Generate 10 random numbers
for (int i = 1; i <= 10; i++)
{
    Console.WriteLine(generator.Next(11));
}
2
3
4
4
10
4
1
1
0
8

متد ()Next آرگومانی را که به عنوان بزرگترین عدد دریافت می‌کند، به عنوان بزرگترین عدد انحصاری می‌پذیرد. بدین معنی که این متد یک مقدار تصادفی که کوچکتر از (نه برابر) آرگومانی که می‌پذیرد را برگشت می‌دهد. در نتیجه از آنجاییکه در مثال بالا عدد 11 را به عنوان آرگومان به این متد ارسال کرده‌ایم، این متد نیز مقادیر ممکن بین 0 و 10 را بر می‌گرداند. همچنین می‌توان محدوده اعدادی که متد ()Next بر می‌گرداند را، مشخص کرد. به عنوان مثال اگر بخواهید اعداد 1 تا 6 روی طاس تولید شود می‌توان کد بالا را به صورت زیر تصحیح کرد :

Console.WriteLine(generator.Next(1, 7)); //Returns random value from 1 to 6

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

Random generator = new Random(0);

//Generate 10 random numbers
for (int i = 1; i <= 10; i++)
{
    Console.WriteLine(generator.Next(11));
}
7
8
8
6
2
6
9
4
10
3

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

using System;

namespace RandomMessage
{
    class Program
    {
        static void Main()
        {
            Random generator = new Random();

            int messageNumber = generator.Next(1, 4);

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

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