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

با استفاده از کلاس 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 برای نشان دادن یک پیغام برای هر مقدار ممکن استفاده می کنیم. بعد از چندین بار اجرای برنامه متوجه می شوید که پیغام خوش آمد گویی تغییر می کند.

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر و اگر سوالی دارید در بخش پرسش و پاسخ مطرح بفرمایید.

  1. نفس پاسخ دادن

    سلام خسته نباشید
    ببخشید میشه در نوشتن این برنامه به من کمک کنید
    برنامه ای بنویسید که دو عدد a,bرا دریافت کند و بین این دو عدد یک عدد تصادفی ایجاد کند
    ممنون

    • یونس ابراهیمی پاسخ دادن

      سلام، سوالتونو توی انجمن مطرح بفرمائید

  2. ali پاسخ دادن

    سلام بابت آموزش دستتون درد نکنه .
    من اصلا برنامه نوسی بلد نیستم . وقتی کد بالا را کپی کردم نمی دانستم که حالا در مسیج باکس چی بگذارم که پیام تصادفی را نشان دهد.

    • یونس ابراهیمی پاسخ دادن

      سلام، شما باید روی دکمه دوبار کلیک کنید، و بعدش کد زیر رو کپی کنید

      Random generator = new Random();
      
      int messageNumber = generator.Next(1, 4);
      
      switch (messageNumber)
      {
      	case 1:
      		MessageBox.Show("Hello to you my friend.");
      		break;
      	case 2:
      		MessageBox.Show("Good day to you sir/mam.");
      		break;
      	case 3:
      		MessageBox.Show("Have a happy day.");
      		break;
      }
  3. محمد پاسخ دادن

    دادا من میخوام یه برنامه عشق سنج بنویسم :) واسه عدد تصادفی نمیدونم چکارکنم؟ :/

    • یونس ابراهیمی پاسخ دادن

      سلام، سوالتونو توی انجمن مطرح بفرمایید
      با تشکر

  4. امین پاسخ دادن

    سلام – می خواهم ماشین حساب با اعداد رندوم بسازم با زبان سی شارپ ممکن است راهنمایی کنید

    • یونس ابراهیمی پاسخ دادن

      سلام ، لطفا سوالات خودتون رو در انجمن پرسش و پاسخ سایت بپرسید .
      با تشکر

  5. BOOOOM پاسخ دادن

    خیلی خیلی ممنون
    کامل و واضح و عالی !
    نمیدونم چجوری تشکر کنم!
    بازم میگم خیلی ممنون

    • یونس ابراهیمی پاسخ دادن

      خواهش میکنم…لطف دارین

  6. مریم پاسخ دادن

    سلام.
    من برای نوشتن یه برنامه در محیط برنامه نویندوزی در زبان #C نیاز به دستوری دارم که به صورت رندم از بین دو عدد در خانه خالی«خانه به صورت رندم
    انتخاب بشود» یک عدد برگرداند. لطفا راهنمایی کنید.
    باتشکر از زحمات شما.

    • یونس ابراهیمی پاسخ دادن

      سلام
      ممنون میشم سوالتونو توی انجمن مطرح بفرمایید

  7. علی پاسخ دادن

    چگونه می توان ارقام یک عدد تصادفی را در ارایه بریزیم

    • vahidbaghi پاسخ دادن

      سلام
      اگر منظورتون این هست که یه عدد تصادفی ایجاد کردید و حالا میخواید ارقامش رو داشته باشید باید از روش تجزیه ی ارقام استفاده کنید.
      اینجا جای نوشتن کد نیست ،ولی روش کلی به این صورت هست که با استفاده از تقسیم متوالی بر ۱۰ و استفاده از باقیمانده تقسیم این کار انجام میشه.برای خودتون یه عدد مثلا سه رقمی رو بر ۱۰ تقسیم کنید و تا باقیمانده پیش برید و دوباره خارج قسمت رو هم بر ۱۰ تقسیم کنید …..
      خودتون متوجه الگوریتم میشید

  8. محمد مهدی پاسخ دادن

    دمت گرم عاااااااااللیییییییییییییی بوددد