الدالة random()‎ في أردوينو

من موسوعة حسوب
< Arduino‏ | math

تولد الدالة random()‎ عددًا شبه عشوائي (pseudo-random) وتعيده.

البنية العامة

random(max)
random(min, max)

المعاملات

min

معامل اختياري يحدِّد الحد الأدنى للعدد العشوائي المراد توليده. القيمة الافتراضية هي: 0.

max

يحدِّد هذا المعامل الحد الأعلى للعدد العشوائي المراد توليده، ولا يدخل هذا العدد ضمن المجال.

القيم المعادة

يعاد عددٌ عشريٌّ يمثِّل العدد العشوائي المولَّد ويقع ضمن المجال [1 - min , max].

أمثلة

مثالٌ على توليد أعداد عشوائية باستعمال الدالة random()‎ وإظهارها:

long randNumber;

void setup(){
  Serial.begin(9600);

  // إن كانت رجل الدخل التشابهي 0 غير متصلة بشيء، فسيسبب
  // الضجيج من المحيط بتوليد قيم عشوائية. تمرَّر هذه القيم
  // لاستعمالها كبذرة للأعداد العشوائية randomSeed() إلى الدالة 
  // المراد توليدها في كل مرة تنفَّذ فيها الشيفرة. سيساعد هذا 
  // .في جعل الأعداد الشبه عشوائية المولد أكثر عشوائية
  randomSeed(analogRead(0));
}

void loop() {
  // طباعة عدد عشوائي يتراوح من 0 إلى 299 
  randNumber = random(300);
  Serial.println(randNumber);

  // طباعة عدد عشوائي يتراوح من 10 إلى 19 
  randNumber = random(10, 20);
  Serial.println(randNumber);

  delay(50);
}

ملاحظات وتحذيرات

إن كان من المهم أن تختلف سلسلة من القيم المولدة باستعمال الدالة random()‎ عن بعضها بعضًا في التنفيذ اللاحق للشيفرة، فاستعمل الدالة randomSeed()‎ لتهيئة مولد العدد العشوائي مع قيمة مدخلة عشوائية تمامًا مثل قراءة قيمة الدخل التشابهي باستعمال الدالة analogRead()‎ مع رجل غير متصلة بشيء.

بشكل معاكس، قد يكون من المفيد في بعض الأحيان استعمال سلسلة من أعداد شبه عشوائية تكرر نفسها في كل مرة دون تغيير. يمكن أن يحدث هذا عبر استدعاء الدالة randomSeed()‎ مع عدد ثابت قبل بدء توليد سلسلة الأعداد العشوائية تلك.

يجب اختيار قيمة المعامل max بما يتوافق مع نوع المتغير الذي ستُخزَّن القيمة المولدة فيه. على أي حال، القيمة القصوى التي يمكن توليدها مقيدةٌ بنوع العدد الذي تولده الدالة random()‎ ألا وهو "عدد طويل" (long)، إذ حجمه 32 بت وأكبر قيمة له هي 2,147,483,647. ضبط المعامل max إلى قيمة أكبر من هذه القيمة لن يولد خطأً أثناء تصريف الشيفرة، ولكن لن تولَّد أعدادٌ عشوائيةٌ كما هو متوقع أثناء تنفيذ الشيفرة.

انظر أيضًا

  • الدالة constrain()‎: تقيِّد عددًا ضمن مجالٍ محدَّدٍ.
  • الدالة max()‎: تعيد أكبر قيمة من القيم الممرَّرة إليها.
  • الدالة randomSeed()‎: تهيِّئ البذرة التي يستعملها مولد الأعداد الشبه عشوائية (pseudo-random numbers) في عملية التوليد.
  • الدالة sq()‎: تحسب مربع العدد الممرَّر إليها (تضرب العدد بنفسه وتعيده).

مصادر