کلاس Random در NET. ابزارهایی را فراهم میکند که بتوانیم توسط آنها اعداد تصادفی تولید کنیم.
سازنده این کلاس دو Overload مختلف دارد. یکی از Overloadها بدون پارامتر است و دیگری مقداری را بعنوان Seed دریافت میکند. کلاس Random سه متد عمومی دارد
• Next : یک عدد تصادفی را برای ما تولید میکند.
• NextByte : آرایهای از بایتها را که با اعداد تصادفی پر شدهاند تولید میکند.
• NextDouble : یک عدد تصادفی را بین 0.0 و 1.0 باز میگرداند.
بررسی متد Next
متد Next سه Overload مختلف دارد و این امکان را برای شما مهیا میکند تا 2 عدد را به عنوان بازه تولید اعداد تصادفی انتخاب کنید (حد پایین و بالای بازه).
تولید یک عدد تصادفی:
var rand = new Random().Next();
تولید یک عدد تصادفی کوچکتر از 1000:
var rand = new Random().Next(1000);
در واقع پارامتر ارسالی حد بالای بازه میباشد و حد پایین بصورت پیش فرض عدد 0 در نظر گرفته میشود.
کد زیر عددی تصادفی را بین محدوده تعیین شده تولید میکند:
public static int RandomNumber(int min, int max)
{
var rand = new Random();
return rand.Next(min, max);
}
بررسی متد NextDouble
قطعه کد زیر (به کمک توابع کلاس Random) رشتهای تصادفی را با طول مشخصی برای ما تولید میکند؛ با قابلیت تعیین بزرگ و یا کوچک بودن کاراکترهای رشته تصادفی:
public static string RandomString(int size, bool lowerCase)
{
StringBuilder builder = new StringBuilder();
Random random = new Random();
char ch;
for (int i = 0; i < size; i++)
{
//تولید عدد و تبدیل آن به کاراکتر
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
builder.Append(ch);
}
if (lowerCase)
return builder.ToString().ToLower();
return builder.ToString();
}
کد زیر پسوردی را به طول 10، که 4 حرف اول آن حروف کوچک و 4 حرف دوم آن عدد و 2 حرف آخر آن حروف بزرگ باشند، تولید میکند:
public string RandomPassword()
{
StringBuilder builder = new StringBuilder();
builder.Append(RandomString(4, true));
builder.Append(RandomNumber(1000, 9999));
builder.Append(RandomString(2, false));
return builder.ToString();
}
بررسی متد NextByte
همانطور که در ابتدای مطلب اشاره شد، خروجی این تابع آرایهای از بایتها میباشد و هر خانهی آن عددی است تصادفی که بزرگتر و یا مساوی 0 و کوچکتر از مقدار Maximum نوع داده Byte است. کد زیر نحوه استفاده از این تابع را نشان میدهد:
byte[] b = new byte[10];
Random rnd = new Random();
rnd.NextBytes(b);
for (int i = 0; i < b.Length; i++)
{
Console.WriteLine(b[i]);
}
خروجی مثال فوق :
153
115
86
5
161
190
249
228
دیدگاه کاربران
0 دیدگاهشما هم دیدگاه خود را ارسال کنید