الدرس الثالث عشر 13: القيمه العشوائيه rund في c++
Rund
القيم العشوائيه
rund :داله موجوده في لغة c++ تقوم بتوليد الارقام والقيم عشوائيا
وتستعمل مثلا في الالعاب البسيطه ك حجر نرد من 1 الى 6 يكون الفضاء العيني له
او اي استخدامات اخرى
يوجد مكتبات تضمن هاذه الداله منها مكتبة stdlib والتي سوف نعتمدها في هاذا الكورس ويتم تضمينها بهاذا الشكل كما تعلمنا في تضمين مكتبه ال string :
#include<stdlib.h>
ماذا بعد ذلك !؟
بعد تضمين المكتبه في اعلى الكود يمكن استدعاء الداله واستعمالها طبقاً للقوانين التاليه:
اولا تحتاج الى اكبر قيمه عشوائيه MAX
ثانيا تحتاج الى اقل قيمه عشوائيه MIN
ثالثا متغير ياخذ القيمه العشوائيه الناتجه (X)
رابعاً كتابه معادله الداله rund لانتاج القيم :
(min+rand()%(max-min+1))
إذاً : الشكل العام هو : (min+rand()%(max-min+1))
حيث min اصغر قيمه مثلا 1 و max اكبر قيمه مثلا 6
ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ مثال ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
في هاذا المثال نعرف متغير ونعطيه قيمه عشوائيه بين ال 1 وال6 كالحجر النرد :
#include <iostream>
#include<stdlib.h>
using namespace std;
void main (){
int min=1,max=6;
int t= min+rand() % ( max - min + 1);
cout<<t;
system("pause");
}
كما تلاحظ اننا عرفنا متغيرين لاكبر واصغر قيمه ثم متغير يحمل القيمه العشوائيه t من خلال معادله الداله
min+rand() % (max - min + 1);
ثم طبعنا قيمه المتغير t
,ويمكن كتابه المعادله بالقيم مباشره كما يلي :
1+rund()%6 ; لكن حسابياً وفقا للمعادله الاساسيه
البرنامج السابق سوف ينتج قيمه عشوائيه عالاغلب 6 (يعود ذلك الى نظام االتشغيل او بيئه العمل)
لكنها سوف تكون ثابته اي انه لو خرجت من البرنامج واعدت تشغيله سوف ينتج نفس القيمه
اي انه كل مره سينتج الرقم 6 مثلا
كيف اجعله ينتج كل مره قيمه عشوائيه مختلفه !؟
لابد وانك تعلم ان الوقت غير ثابت وغير متكرر(مع التاريخ) وهناك اجزاء اجزاء من الثانيه يتعامل بها الجهاز
فماذا لو استخدمنا الوقت في تكوين قيمنا العشوائيه !!؟
هنا ياتي دور مكتبه الوقت والتي تحل لنا المشكله السابقه
ويجب تضمينها كأي مكتبه كالتالي :
#include <time.h>
بعد ذلك نستدعي داله ال srund() ونمرر لها داله الوقت مع براميتر0
قبل كتابه معادله داله rund كالتالي:
srand(time(0));
ليصبح برنامجنا كالتالي :
#include <iostream>
#include<stdlib.h> //المكتبه التي تحتوي rund
#include <time.h> // مكتبه الوقت
using namespace std ;
void main ()
{srand(time(0)); // الجمله ثابته لتوليد ارقام مختلفه كل مره
int min=1,max=6;
int t= min+rand() % (max - min + 1); // معادله ال rund
cout<<t;
system("pause");
}
رابط الحلقه عاليوتيوب اضغط هنا
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ مثال شامل ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
صمم لعبه بسيطه بحيث يختار البرنامج رقم عشوائياً من بين رقمين يتم اختيارهم عشوائيا ايضا بحيث يكون اصغر رقم بين ال 10 وال30 واكبر رقم بين ال 80 وال100
بعد ذلك... يطلب من المستخدم ضغط حرف S لبدء اللعبه
ثم يطلب من المستخدم ادخال (تخمين الرقم )الرقم بحيث يعلم المستخدم "ادخل رقم بين (اصغر قيمه ) و (اكبر قيمه )"
اذا ادخل المستخدم رقم اقل يخبره ان الرقم قليل اعد المحاوله
اذا ادخل المستخدم رقم اكبر يخبره ان الرقم كبير اعد المخاوله
اذا ادخل الرقم الصحيح يخبره انه صحيح ويخبره بعدد المحاولات
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ الحل ــــــــــــــــــــــــــــــــــــــــ
Comments
Post a Comment