در زبان هاي برنامه نويسي مختلف اعداد تصادفي اهميت ويژه اي دارند . در خيلي از الگوريتم هاي پيشرفته اي که در علوم کامپيوتر استفاده ميشه (مثل الگوريتم هاي ژنتيک) اعداد رندم نقش مهمي رو ايفا ميکنند . بدليل کاربرد زيادشون مخصوصا تو زبان جاوا اسکريپت و صفحات وب ، امروز شيوه ي توليد اعداد تصادفي رو در زبان جاوااسکريپت مفصلا توضيح ميديم .
:: اگر شما بخوايد کدهاي جاوااسکريپتي شبيه کد نمايش عکس تصادفي ، کد پخش موزيک رندم ، کد نمايش سخن و متن اتفاقي و امثال اين کدها رو بنويسيد ، حتما نياز داريد تا عددي رو به صورت تصادفي توليد کنيد که معمولا ايندکس آرايه ي نگه دارنده ي آدرس عکس ، موزيک يا نوشته ي تصادفي انتخاب شده هست .
خوب ، بريم سر اصل مطلب . در javascript براي توليد اعداد random از متد ()Math.random استفاده ميشه . متد ()Math.random يک عدد اعشاري بين 0 و 1 رو توليد ميکنه . به طور مثال اگر شما کد زير رو درون تگ body در صفحه ي وب قرار بديد يک عدد اعشاري بين 0 و 1 ، با بيش از ده رقم اعشار براتون چاپ ميشه .
<script type="text/javascript"> randomNumber = Math.random(); document.write(randomNumber); </script>
خروجي اين کد (یک عدد تصادفی اعشاري بين 0 و 1) : (با رفرش صفحه عددي جديد مي بينيد)
در کد فوق عدد تصادفي توسط متد ()Math.random توليد شده و در متغير randomNumber قرار ميگيره و مقدار اين متغير توسط متد ()document.write در صفحه ي وب چاپ ميشه .
حالا اگربخوايد اعداد بزرگتري رو به صورت رندم توليد کنيد کافيه عدد توليد شده توسط متد رندم رو در حداکثر عدد دلخواهتون ضرب کنيد . مثلا اگر ميخوايد يک عدد رندم بين 0 تا 100 توليد کنيد ، همون کد بالا رو به شکل زير داريم :
<script type="text/javascript"> randomNumber = Math.random() * 100; document.write(randomNumber); </script>
خروجي اين کد (یک عدد تصادفی اعشاري بين 0 و 100) : (با رفرش صفحه عددي جديد مي بينيد)
برای اینکه اعداد تصادفی تولید شده رو از حالت اعشاری دربیارید و اعداد رو به صورت صحیح و بدون قسمت اعشاری داشته باشید باید از متد ()Math.floor استفاده کنید . این تابع یک عدد اعشاری رو به عنوان ورودی میگیره و خروجیش جزء صحیح اون عدد هست . جزء صحیح همون بزرگترین عدد صحیح کوچکتر از یک عدد اعشاریه . پس برای تولید اعداد صحیح بین 0 تا یک عدد دلخواه مثل 100 ، کد رو به شکل زیر داریم :
<script type="text/javascript"> randomNumber = Math.floor(Math.random() * 100); document.write(randomNumber); </script>
در این کد ابتدا یک عدد اعشاری بین 0 و 1 توسط تابع random تولید میشه ، بعد ضرب در 100 میشه و سپس عدد حاصل ،که یک عدد اعشاری بین 0 تا 100 هست ، جزء صحیحش توسط متد floor گرفته میشه و در متغیر randomNumber قرار میگیره .
خروجي اين کد (یک عدد تصادفی صحیح بين 0 و 100) : (با رفرش صفحه عددي جديد مي بينيد)
شاید دوست نداشته باشید عدد تصادفی از 0 تا یه عدد دلخواه باشه . و بخواید مثلا عدد تولید شده بین 80 تا 100 باشه . انجام اینکار هم سادست . فرض کنید که میخواید اعداد تصادفی تولید شده بین دو عدد x و y باشه . کافیه عدد باند پایین یعنی x رو به عدد رندم تولید شده اضافه کنید و تابع رندم رو به جای اینکه در y ضرب کنید در y-x ضرب کنید . مثلا اگر بخواید اعداد تصادفی تولید شده بین 80 و 92 باشند ، کد رو باید به صورت زیر بنویسید :
<script type="text/javascript"> randomNumber = 80 + Math.floor(Math.random() * 12); document.write(randomNumber); </script>
12 همون اختلاف بین 92 و 80 هست ، و 80 رو هم که با عدد تصادفی تولید شده جمع کردیم . در واقع حداقل میخواید 80 رو داشته باشید به اضافه ی یک عدد تصادفی بین 0 تا 12 !
خروجي اين کد (یک عدد تصادفی صحیح بين 80 و 92) : (با رفرش صفحه عددي جديد مي بينيد)
:: در آخر هم یک تابع ساده براتون نوشتم که دیگه نخواید کد اضافه بزنید ! به راحتی میتونید کد زیر رو درون تگ head اضافه کنید :
<script type="text/javascript"> function myRandom(start,end){ randomNumber = start + Math.floor(Math.random() * (end-start)); return randomNumber; } </script>
و درون تگ body به همین راحتی از اون استفاده کنید(که در مثال زیر چهار بار برای دامنههای مختلف عددی استفاده شده) :
<script type="text/javascript"> document.write(myRandom(0,3)+'<br>'); document.write(myRandom(10,20)+'<br>'); document.write(myRandom(100,1000)+'<br>'); document.write(myRandom(1000,2000)+'<br>'); </script>
تگ br هم که استفاده شده برای نمایش هر عدد در یک خط جدید است .
:: خروجي کد (چهار عدد تصادفی در دامنههای ذکر شده در کد) : (با رفرش صفحه اعداد نو ميبينيد)
اگر این مقاله رو خوب خونده باشید ، میدونید که این تابع روش کارش چطور بوده .
دوستان عزیز ، برای نوشتن این مقالات وقت گذاشته شده و زحمت کشیده شده . لطفا در صورت انتشار این مطلب در وبگاهتون منبع رو ذکر کنید . با تشکر فراوان .
چیز دیگه مونده در مورد تولید اعداد تصادفی؟
var n1= Math.floor(Math.random() * 100);
var n2= Math.floor(Math.random() * 100);
var m=n1*n2;
random(6);