تولید اعداد تصادفی
با استفاده از متد ()rand میتوان اعداد تصادفی تولید کرد. ساده ترین حالت استفاده از این متد این است که به آن هیچ آرگومانی ارسال نشود که باعث می شود یک عدد تصادفی مثبت و float بین اعداد 0 و 1 تولید شود:
puts rand
0.09556308780792833
حالت دیگر این است که به این متد یک عدد صحیح ارسال کنید. در این صورت عدد تصادفی تولید شده عددی بین 0 تا یک واحد کمتر از عدد ارسالی می باشد. مثلا اگر شما عدد 5 را به متد rand بدهید، عدد تولید شده ممکن است 0، 1، 2، 3 و 4 باشد:
puts rand 10
7
خروجی شما مطمئناً متفاوت است چون همه اعداد تصادفی میباشند. این متد محدوده هم قبول میکند. به زبان سادهتر در داخل پرانتز مشخص میکنیم که عدد تصادفی در بین چه محدودهای از اعداد تولید شود. در مثال زیر ما یک عدد تصادفی بین 5 و 11 را خواستهایم. برای تولید یک لیست از اعداد تصادفی هم میتوان به صورت زیر عمل کرد :
puts rand(5..11)
9
برای تولید عدد تصادفی float به جای اعداد صحیح بالا، عدد float بنویسید:
puts rand(2.0..2.5)
2.317176131483351
اگر بخواهید هنگام استفاده از متد rand، چندین عدد تصادفی تولید شود، می توانید از حلقه for استفاده کنید:
for i in 1..10 puts rand(5..13) end
10 12 7 13 7 9 13 9 10 9
کد بالا 10 رقم تصادفی بین 5 تا 13 را تولید می کند.
دریافت آیتم تصادفی از آرایه
در مثال های بالا، ما اعداد تصادفی را از یک محدوده مرتب تولید می کردیم. حال فرض کنید که یک آرایه داریم که شامل اعداد مختلفی می باشد. در این صورت باید چکار کنیم؟ برای انتخاب مثلاً سه آیتم تصادفی از بین آیتم های یک آرایه هم میتوان از متد ()sample به صورت زیر استفاده کرد:
array = [5, 9, 3, 1, 8, 4]
puts array.sample
8
در مثال بالا، ما هیچ آرگومانی به متد ()sample ارسال نکرده ایم. در نتیجه با هر بار اجرای برنامه، یک آیتم به صورت تصادفی در اختیار ما می گذارد. اگر چندین آیتم تصادفی از آرایه بخواهیم تکلیف چیست؟ متد ()sample یک آرگومان قبول میکند و آن تعداد آیتمهایی است که قرار است به صورت تصادفی از آرایه انتخاب شوند:
array = [5, 9, 3, 1, 8, 4]
puts array.sample(3)
5 3 4
و اما یک مثال ساده دیگر در مورد متد ()rand. برنامه زیر پیغامهای متفاوتی در هر بار اجرای آن به شما نشان میدهد:
messageNumber = rand 1..3 if (messageNumber == 1) print("Hello to you my friend.") elsif (messageNumber == 2) print("Good day to you sir/mam.") elsif (messageNumber == 3) print("Have a happy day.") end
برنامه مقادیر 1 تا 3 را تولید میکند. سپس با استفاده از دستور if برای نشان دادن یک پیغام برای هر مقدار ممکن استفاده میکنیم. بعد از چندین بار اجرای برنامه متوجه میشوید که پیغام خوش آمد گویی تغییر میکند.