tgoop.com/CsharpWindowsForm/252
Last Update:
بسم الله الرحمن الرحيم
موضوع اليوم : شرح الكلاس Random
الكلاس Random (عشوائي)
يستخدم لتوليد القيم العشوائية (اعداد , نصوص , الوان) وغيرها من القيم
سوف نشرح اليوم كيف تستخدم هذا الكلاس
سوف نبدأ بالامثلة السهله ومن ثم نشرح بعض الأمثلة المتقدمة
يتم انشاء اوبجكت من الكلاس Random
Random rand = new Random();
المثال الأول :
في هذا المثال سنقوم بعمل مصفوفه ارقام ومن ثم نقوم بطباعة عدد غير محدد أي بشكل عشوائي في دالة الحدث Click للButton
private void button1_Click(object sender, EventArgs e)
{
Random rand = new Random();
int[] arr = new int[] { 1, 2, 3, 4, 5, 6 };
MessageBox.Show(rand.Next(0, arr.Length).ToString());
}
شرح المثال :
بعد ان قمنا بإنشاء اوبجكت عشوائي انشئنا مصفوفة تحوي 6 عناصر
ومن ثم قمنا بالطباعة لاحظ اننا استخدمنا الاوبجكت rand لكي نستخدم الدالة التابعة له next هذه الدالة تأخذ وسيطين الأول اصغر قيمه والثاني اكبر قيمه,
أي نقوم بحصر القيم التي سوف يتم اختيارها بشكل عشوائي فمثلاً لو قمنا بتغيير سطر الطباعة بهذا الشكل :
MessageBox.Show(rand.Next(2, arr.Length).ToString());
لاحظ اننا قمنا بتغيير قيمه الوسيط الأول الى 2 في هذه الحالة سوف يتم استبعاد العناصر 0 و 1 أي لن يتم اختيارهن بين القيم التي سوف يتم طباعتها بشكل عشوائي .
ايضاً لو تلاحظ في الأمثلة السابقة سوف يتم استبعاد العنصر الأخير الرقم 6 ,
ولكي تقوم بحصر جميع القيم في مصفوفة .
MessageBox.Show(rand.Next(0, arr.Length+1).ToString());
ايضاً تستطيع ان تقوم بطباعة قيمه من بين عده قيمه بدون ان تقوم بعمل مصفوفة فقط تقوم بإنشاء اوبجكت عشوائي ومن ثم تحدد من اين يبدا توليد القيمة وأين ينتهي .
مثال :
private void button1_Click(object sender, EventArgs e)
{
Random rand = new Random();
MessageBox.Show(rand.Next(0, 100).ToString());
}
• امثله على النصوص
ايضاص يمكنك استخدام الكلاس Random لاختيار قيم عشوائيه من مصفوفة string كما في المثال التالي
private void button1_Click(object sender, EventArgs e)
{
Random rand = new Random();
string[] str = new string[] { "C#", "C++", "Java", "C", "PHP"};
string s = str[rand.Next(0, str.Length)];
MessageBox.Show(s);
}
او كما في الكود التالي
private void button1_Click(object sender, EventArgs e)
{
Random rand = new Random();
string[] str = new string[] { "C#", "C++", "Java", "C", "PHP"};
int index = rand.Next(str.Length);
MessageBox.Show(str[index]);
}
امثلة متقدمة :
في المثال التالي سوف نقوم بعمل دالة تقوم بتوليد نصوص بشكل عشوائي ونقوم بإرسال للدالة طول النص الذي نريد ان تقوم بتوليد
مثال :
private static string RandomString(int length)
{
const string str = "abcdefghijklmnopqrstuvwxyz0123456789";
StringBuilder builder = new StringBuilder();
for (int i = 0; i < length; i++)
{
string c = str[random.Next(0, str.Length)];
builder.Append(c);
}
return builder.ToString();
}
في المثال السابق قمنا بعمل متغير ثابت str يحتوي على جميع الاحرف الإنجليزية وايضاً الاعداد من 0 الى 9
ولكي تجعل الدالة تقوم بتوليد اعداد فقط قم بكتابة الاعداد من 0 الى 9
اما بالنسبة للكلاس StringBuilderسوف نوضحه في نهاية الموضوع وما الفرق بينه وبين الكلاس string
الان نستدعي الدالة من دالة الحدث Click
بهذه الطريقة :
private void button1_Click(object sender, EventArgs e)
{
label1.Text = RandomString(5);
MessageBox.Show(RandomString(5));
}
لاحظ انهو تم إضافة أداة lable كي يتم اسناد القيمة العشوائية لخاصية النص text الخاصة بالاداة lable
مثال كيفية استخراج سطر من ملف نصي بشكل عشوائي
لنفرض انك تريد ان تقوم بعمل لعبة اسئله مثل لعبة من سيربح المليون وتريد في كل مرة يلعبها المستخدم ان تتغير الأسئلة عن السابق
نقوم بعمل دالة تقوم بهذا العمل و نرسل لها مسار ملف txt
public string GetRandomLine(ref string file)
{
List<string> lines = new List<string>();
Random rnd = new Random();
BY برمجة تطبيقات الويندوز C# Programming
Share with your friend now:
tgoop.com/CsharpWindowsForm/252