الأرقام العشوائية

معظم برامج الحاسوب تجري نفس الأفعال في كل مرة يتم تشغيلها، ولذلك يقال أنها حتمية (deterministic). في العادة، تكون الحتمية شيئاً جيداً، لأننا نتوقع أن تعطي العملية الحسابية نفس النتيجة كل مرة. لكن في بعض التطبيقات نحتاج من الحاسب أن يتصرف بشكل غير محسوب. الألعاب هي مثال واضح على هكذا تطبيقات، لكن يوجد غيرها أيضاً.
إن جعل البرنامج غير متوقع بالمرة (truly nondeterministic) ليس سهلاً، لكن توجد طرق لجعله يبدو غير محتم على الأقل. إحدى تلك الطرق توليد الأرقام العشوائية واستعمالها لتحديد خرج البرنامج. توفر Java، عملية تولد أرقاماً شبه عشوائية (pseudorandom)، التي قد لا تكون عشوائية تماماً، لكن مقارنة مع احتياجاتنا، فهي عشوائية بما يكفي.
انظر إلى وثائق العملية random في صنف Math. القيمة المعادة هي عدد عشري محصور بين 0.0 و1.0. لنتوخى الدقة، العدد أكبر من أو يساوي 0.0 وأصغر تماماً من 1.0. في كل مرة تستدعي random تحصل على الرقم التالي في سلسلة شبه عشوائية. لتشاهد مثالاً على ذلك، شغل هذه الحلقة:
كود:
for (int i = 0; i < 10; i++) {
   double x = Math.random();
   System.out.println(x);
}
لتوليد عدد عشري عشوائي محصور بين 0.0 وحد أعظمي متغير مثل high، يمكنك ضرب x بhigh. كيف يمكنك توليد عدد عشوائي بين حدين low وhigh؟ كيف تستطيع توليد عدد صحيح عشوائي؟
تمرين 12.3 اكتب عملية باسم randomDouble تأخذ عددين عشريين، low وhigh، وتعيد قيمة عشوائية عشرية x بحيث يكون low ≤ x < high.
تمرين 12.4 اكتب عملية باسم randomInt تأخذ متحولين، low وhigh، وتعيد قيمة عشوائية صحيحة أكبر أو تساوي low وأصغر تماماً من high.