متد Next از کلاس Random
نام دوره: زبان سی شارپ مقدماتی
نویسنده: علی مقدم جاه (مدرس دوره)
متد Next از کلاس Random چیست؟
در بعضی اوغات در برنامههایمان نیاز داریم تا بصورت تصادفی و بدون دخالت انسانی، یک یا چند حالت را انتخاب کنیم.
سادهترین مثال ممکن برای درک این موضوع میتواند قرعهکشیها باشد.
فرض کنید در یک قرعهکشی صد نفر شرکت کردهاند که تنها ده نفر آنها قرار است که برنده شده و جایزه دریافت کنند، اما آن ده نفر چه افرادی هستند؟
راهحل اول برای پیدا کردن آن ده نفر، پرسیدن عدد از یک انسان است که در برنامههای ورزشی شبکههای داخلی قطعا مشاهده کردهاید.
اما راهحل دوم که کاملا سیستمی بوده و امکان تقلب در آن وجود ندارد، استفاده از متد Next داخل کلاس Random است.
برای استفاده از متد Next نیاز داریم تا در ابتدا یک شئ از کلاس Random در برنامه خود ایجاد کنیم.
Random rand = new Random();
در کد بالا، Random کلاس بوده و rand نام شئای است که ما برای آن انتخاب کردیم.
حال که شئ rand را از کلاس Random تعریف کردیم، میتوانیم با استفاده از آن متد Next را فراخوانی کنیم:
Random rand = new Random();
int a = rand.Next(1, 100);
در مثال بالا ابتدا یک ظرف درست کردیم از نوع int با شناسه a که وقتی عدد تصادفی تولید شد، در آن ظرف ذخیره شود.
همانطور که مشاهده میکنید، متد Next تنها توسط شئای از کلاس Random قابل فراخوانی بوده که چون rand یک شئ از کلاس Random است، پس توانستیم متد Next را فراخوانی کنیم.
در پرانتز متد Next میتوانیم به عنوان ورودی دو عدد را مشخص کنیم تا عدد تصادفی را در بین آنها مشخص کند.
نکته: ممکن است عدد شروع که در این مثال ۱ است، بصورت تصادفی توسط متد Next تولید شود؛ اما عدد پایانی که در این مثال ۱۰۰ است، به هیچ عنوان به عنوان عدد تصادفی امکان تولیدشدن را ندارد!
نکته: درصورتی که میخواهید بازه شما بین ۱ تا ۱۰۰ بوده و خود عدد ۱۰۰ به عنوان گزینههای انتخابی متد Next باشد، حتما به عدد پایانی یک واحد اضافه کنید:
Random rand = new Random();
int a = rand.Next(1, 101);
همانطور که مشاهده میکنید، عدد پایانی را ۱۰۱ در نظر گرفتیم که به هیچ عنوان بصورت تصادفی تولید نمیشود، اما یک تا صد ممکن است که توسط متد Next بصورت تصادفی انتخاب شوند.
پس فراموش نکنید که حتما عدد پایانی را همیشه بصورت n+1 بنویسید.
نکته: درصورتی که بازه اعداد شروع و پایان شما کم باشد و متد Next را در یک حلقه به کار برده باشید، ممکن است تا اعداد تکراری را نیز برای شما تولید کند، چرا که متد Next متوجه آن نمیشود که درون یک حلقه بوده و نباید عدد تکراری تولید کند؛ به همین علت درصورتی که از متد Next درون حلقهها استفاده کردهاید، باید توسط دستورات شرطی از ذخیره اعداد تکراری تصادفی تولید شده جلوگیری کنید.
جهت شرکت در دورههای زبان برنامه نویسی سیشارپ، از کد تخفیف heplc30 استفاده کنید.