لنفرض أننا نريد تصميم برنامج اختبر معلوماتك يقوم بعرض الأسئلة بطريقة عشوائية جذابة و جميلة أو نريد تصميم برنامج قرعة يقوم باختيار اسم عشوائي من بين مجموعة أسماء كالذي نراه في البرامج التلفزيونية أو نريد تصميم لعبة بسيطة باستخدام لغة الفيجوال بيسك ...
الحل هو استخدام الفئة random في الفيجوال بيسك دوت نت
ماهي random class : هي فئة تستخدم في توليد أعداد بطريقة عشوائية
فلنفرض مثلا أن احدى شركات الحج جاءت الينا تشكو كثرة عدد الحجاج لديها و عدم وجود أماكن لكثير من المتقدمين لديها لأداء مناسك الحج و تطلب منا حلا يرضي الجميع و لا يظلم أحدا ...
فنقول لها الحل بسيط تعطينا أسماء المتقدمين و نحن نختار سعيدي النصيب عشوائيا فلا ندع مجالا لأن يشك أحد أنه ظلم أو أنه لو كان لديه واسطة لكان منهم أو... وسيعود في العام القادم ليعيد الكرة مرة أخرى وهذا هو النظام الذي تتبعه جمهورية مصر العربية فمع كثرة المتقدمين لأداء مناسك الحج لديها يتم عمل قرعة بينهم باستخدام الكمبيوتر ليختار أسماء عشوائية ...
بعد كل هذا الكلام ...نذهب الى برنامج الفيجوال بيسك و نقوم بفتج مشروع جديد لنبدأ العمل:
لننشأ نسخة من نفس الفئة نستعمل الطريقة المعروفة في إنشاء الفئات باستخدام الأمر New كما يلي :
Dim TheRandom As New Random
حيث TheRandom اسم المتغير يمكن استبداله بأي اسم آخر
أهم الـــوسائل methds الخاصة بالأداة
(1)next :
قم باضافة button1 و textbox1 الى النموذجform واكتب الكود الثالي في الحدت الخاص بـالــbutton_click
Dim TheRandom As New Random
TextBox1.Text = TheRandom.Next()
و نقوم بتشغيل البرنامج فنلاحظ عن الضغط على الزر يظهر في مربع النص أرقام عشوائية بالملايين و الآلاف فمرة يظهر الرقم مليون و بعديه مباشرة يظهر الرقم خمسة و هكذا ...
اذا الوسيلة next نقوم بجلب أرقام عشوائية صحيحة موجبة وهذه الأرقام تنحصر بين 0 و 2,147,483,647
أي أنه مرة يطلع الرقم 2,147,483,647 و المرة التالية يطلع الرقم صفر
ولكن اذا كنا نصمم برنامج لمدرسة مثلا عدد طلابها 350 طالب فقط فلا حاجة لنا بهذه الأرقام المهولة ((لا نحتاج الى الرقم2,147,483,647 )) فلا يوجد طالب رقمه 1542874
ولذلك هناك تعديل بسيط جدا في الكود السابق كالتالي
Dim TheRandom As New Random
TextBox1.Text = TheRandom.Next(350)
نرى أننا بين القوسين ()و ضعنا أقصى قيمة للأرقام العشوائة لا تزيد عليها فعند تشغيل البرنامج سوف تكون أقصى قيمة هي 349 لأن الترقيم يبدأ من صفر وليس من واحد
ولكن أيضا هناك مشكلة أخى تواجهنا هنا و هي لو أنه لدينأ أرقام جلوس للطلاب تبدأ من 360 الى 840 و نريد توزيعهم بطريقة عشوائية على الفصول فعندئذن نحتاج الى تحديد أقل قيمة و أقصى قيمة فيكون الكود بعد التعديل كالتالي :
Dim TheRandom As New RandomTextBox1.Text = TheRandom.Next(360, 840)
فتكون الصورة العامة
TextBox1.Text = TheRandom.Next() :code
TextBox1.Text = TheRandom.Next(maxValue) :code
TextBox1.Text = TheRandom.Next(minValue,maxValue) :code
(2)NextDouble :
تستخدم هذه الخاصية في توليد أرقام عشوائية تنحصر بين 0,0 و 1,0 بحيث تكون هذا الأرقام أكبر من أو تساوي 0,0 وأصغر من 1
و لترى أرقام عجيبة نتصر بين 0 و 1 قم بكتابة الكود التالي :
Dim TheRandom As New Random
TextBox1.Text = TheRandom.NextDouble() :code
و تعد هاتين أشهر وسيلتين و أكثرهما استخداما خاصة الأولى
ملحوظة : عند كتابة الكود التالي
TextBox1.Text = TheRandom.Next(1, 3) code
فان الأرقام المتولدة سوف تكون 1 و 2 فقط أما ثلاثة فلا تدخل ضمن نطاق الكود
مثال :
قم بثصميم نموذج يحتوي button1 , textbox1,listbox1 كما في الصورة حيث عند الضغط على button1((اختيار اسم عشوائي من القائمة)) يتم اختيار اسم عشوائي من القائمة و اضهاره في الــtextbox
الكود بسيط جدا كما يلي :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e AsHandles Button1.Click
Dim TheRandom As New Random
TextBox1.Text = ListBox1.Items(TheRandom.Next(ListBox1.Items.Count))
End Sub
و لي معكم لقاء مفصل في كيفية تصيم برنامج اختبر معلوناتك و لقاء آخر لتصميم لعبة بسيطة وكلاهما يعتمدان على هذا الدرس و السلام عليكم و رحمة الله
شكراً لك أخـي !
ردحذفشكرا
ردحذفجميل جدا
ردحذفرائع بارك الله فيك
ردحذفبارك الله بك لقد استفدت كثيرا
ردحذفبارك الله فيك ...
ردحذفرائع جدا
ردحذفمعي استفسار بسيط
هل من الممكن عدم تكرار الرقم العشوائي
جزاك الله خيراً .. هل في طريقة اقدر بواسطتها اخلي الارقام اللي تتكرر تظهر أمامي مباشرة على TextBox
ردحذفالله يوفقك يا معلم على هالدرس الرائع
ردحذف