:: در زبان های برنامه نویسی مختلف اعداد تصادفی اهمیت ویژه ای دارند . در خیلی از الگوریتم های پیشرفته ای که در علوم کامپیوتر استفاده میشه (مثل الگوریتم های ژنتیک) اعداد رندم نقش مهمی رو ایفا میکنند . بدلیل کاربرد زیادشون مخصوصا تو زبان جاوا اسکریپت و صفحات وب ، امروز شیوه ی تولید اعداد تصادفی رو در زبان جاوااسکریپت مفصلا توضیح میدیم .
:: اگر شما بخواید کدهای جاوااسکریپتی شبیه کد نمایش عکس تصادفی ، کد پخش موزیک رندم ، کد نمایش سخن و متن اتفاقی و امثال این کدها رو بنویسید ، حتما نیاز دارید تا عددی رو به صورت تصادفی تولید کنید که معمولا ایندکس آرایه ی نگه دارنده ی آدرس عکس ، موزیک یا نوشته ی تصادفی انتخاب شده هست .
:: تولید اعداد اعشاری تصادفی بین صفر و یک :
:: خوب ، بریم سر اصل مطلب . در javascript برای تولید اعداد random از متد ()Math.random استفاده میشه . متد ()Math.random یک عدد اعشاری بین 0 و 1 رو تولید میکنه . به طور مثال اگر شما کد زیر رو درون تگ body در صفحه ی وب قرار بدید یک عدد اعشاری بین 0 و 1 ، با بیش از ده رقم اعشار براتون چاپ میشه .
|
<script type="text/javascript">
randomNumber = Math.random();
document.write(randomNumber);
</script>
|
:: خروجی این کد (یک عدد تصادفی اعشاری بین 0 و 1) : (با رفرش صفحه عددی جدید می بینید)
0.8044865501578897
در کد فوق عدد تصادفی توسط متد ()Math.random تولید شده و در متغیر randomNumber قرار میگیره و مقدار این متغیر توسط متد ()document.write در صفحه ی وب چاپ میشه .
:: تولید اعداد اعشاری تصادفی بین صفر و عددی دلخواه :
حالا اگربخواید اعداد بزرگتری رو به صورت رندم تولید کنید کافیه عدد تولید شده توسط متد رندم رو در حداکثر عدد دلخواهتون ضرب کنید . مثلا اگر میخواید یک عدد رندم بین 0 تا 100 تولید کنید ، همون کد بالا رو به شکل زیر داریم :
|
<script type="text/javascript">
randomNumber = Math.random() * 100;
document.write(randomNumber);
</script>
|
:: خروجی این کد (یک عدد تصادفی اعشاری بین 0 و 100) : (با رفرش صفحه عددی جدید می بینید)
71.3299200637266
:: تولید اعداد صحیح تصادفی بین صفر و عددی دلخواه :
برای اینکه اعداد تصادفی تولید شده رو از حالت اعشاری دربیارید و اعداد رو به صورت صحیح و بدون قسمت اعشاری داشته باشید باید از متد ()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) : (با رفرش صفحه عددی جدید می بینید)
79
:: تولید اعداد صحیح تصادفی بین دو عدد دلخواه :
شاید دوست نداشته باشید عدد تصادفی از 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) : (با رفرش صفحه عددی جدید می بینید)
83
:: تابع تولید اعداد صحیح تصادفی بین دو عدد دلخواه :
:: در آخر هم یک تابع ساده براتون نوشتم که دیگه نخواید کد اضافه بزنید ! به راحتی می تونید کد زیر رو درون تگ 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 هم که استفاده شده برای نمایش هر عدد در یک خط جدید است .
:: خروجی کد (چهار عدد تصادفی در دامنه های ذکر شده در کد) : (با رفرش صفحه اعداد نو میبینید)
0
12
755
1332
اگر این مقاله رو خوب خونده باشید ، می دونید که این تابع روش کارش چطور بوده .
منبع: http://www.7learn.com/