توليد اعداد random و تصادفي در جاوااسکريپت

:: در زبان هاي برنامه نويسي مختلف اعداد تصادفي اهميت ويژه اي دارند . در خيلي از الگوريتم هاي پيشرفته اي که در علوم کامپيوتر استفاده ميشه (مثل الگوريتم هاي ژنتيک) اعداد رندم نقش مهمي رو ايفا ميکنند . بدليل کاربرد زيادشون مخصوصا تو زبان جاوا اسکريپت و صفحات وب ، امروز شيوه ي توليد اعداد تصادفي رو در زبان جاوااسکريپت مفصلا توضيح ميديم .

:: اگر شما بخوايد کدهاي جاوااسکريپتي شبيه کد نمايش عکس تصادفي ، کد پخش موزيک رندم ، کد نمايش سخن و متن اتفاقي و امثال اين کدها رو بنويسيد ، حتما نياز داريد تا عددي رو به صورت تصادفي توليد کنيد که معمولا ايندکس آرايه ي نگه دارنده ي آدرس عکس ، موزيک يا نوشته ي تصادفي انتخاب شده هست .

:: توليد اعداد اعشاري تصادفي بين صفر و يک :

:: خوب ، بريم سر اصل مطلب . در 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 هم که استفاده شده برای نمایش هر عدد در یک خط جدید است .
:: خروجي کد (چهار عدد تصادفی در دامنه‌های ذکر شده در کد) :  (با رفرش صفحه اعداد نو ميبينيد)

اگر این مقاله رو خوب خونده باشید ، می‌دونید که این تابع روش کارش چطور بوده .
:: دوستان عزیز ، برای نوشتن این مقالات وقت گذاشته شده و زحمت کشیده شده . لطفا در صورت انتشار این مطلب در وبگاهتون منبع رو ذکر کنید . با تشکر فراوان .
:: چیز دیگه مونده در مورد تولید اعداد تصادفی؟

 
ارسال دیدگاه
ما همه سوالات و دیدگاه ها رو می خونیم و پاسخ میدیم
۴۵ دیدگاه
میلاد سرمه ی لی ۱۰ مهر ۱۴۰۰، ۱۰:۳۲
زیبا مطمئن کاربردی مرسی بابت این پیج بسیار کاربردی ممنونم بازم خیلی خوب بود خداحافظ
نازنین کریمی مقدم ۱۰ مهر ۱۴۰۰، ۱۴:۴۹
ممنون که با ما همراه هستید.
شلیر ۱۱ فروردین ۱۳۹۲، ۱۲:۴۱
سلام من باید اشعار حافظ رو توی یک ارایه قراربدم وبعد با کلیک روی یه دکمه فال بگیره.
ولی اصلا انجام نمیشه
ابزارهای شماهم کار نمیکنه برای یه سایت تمرین کلاسی میخوام
سپاس
مهدی ۰۱ فروردین ۱۳۹۲، ۲۱:۵۷
سلام
من میخام عکس هدر وبلاگم به صورت تصادفی نغییر کنه
برای این کار اولا باید عدد تصادفی تولید کنم و بعدش یه چیزی مانند if در زبان c داشته باشم تا به یکی از عکس ها ارجاع بدم :idea:
من از بلوگفا استفاده میکنم
میشه یه نمونه کد بدین؟
ممنون میشم اگه به ایمیلم جواب بدین
خیلی مرسی :wink:
hassan ۲۴ بهمن ۱۳۹۱، ۲۳:۳۵
استاد گفته باید با for درست بشه
hassan ۲۱ بهمن ۱۳۹۱، ۱۶:۰۳
اگه کد جاواشو برام بفرستین ممنون میشم html شو بلدم مرسی
لقمان آوند ۲۱ بهمن ۱۳۹۱، ۱۷:۰۲
خوب سادست که . ضرب دو عدد تصادفی بین 0 تا 100 .
var n1= Math.floor(Math.random() * 100);
var n2= Math.floor(Math.random() * 100);
var m=n1*n2;
hassan ۲۱ بهمن ۱۳۹۱، ۱۵:۳۴
خسته نباشید آره دو عدد انتخاب کنه و به صورت تصادفی ضرب کنه
hassan ۲۱ بهمن ۱۳۹۱، ۰۱:۱۷
SALAM KHASTE NABASHID
man ye barnameh mikham ke zarb 2 adad be sorat tsadofi njam bedeh
لقمان آوند ۲۱ بهمن ۱۳۹۱، ۱۴:۵۳
یعنی چی ؟ یعنی دو عدد رندم انتخاب کنه و اونا رو ضرب کنه ؟ خوب از طریقی که در این پست گفته 2 تا عدد رندم بدست بیار و در هم ضرب کن .
پروانه ۰۹ بهمن ۱۳۹۱، ۱۳:۲۵
سلام ببخشید میشه منابع این مطالب رو بگید از کجان؟
از رو چه کتابایی..مقالاتی..استفاده کردید
لازم دارم مرسی
لقمان آوند ۰۹ بهمن ۱۳۹۱، ۱۳:۵۶
سلام
این مطلب رو خودم نوشتم . از دونسته های قبلی و از جای خاصی استفاده نشده .
nasim ۲۷ آذر ۱۳۹۱، ۱۵:۵۵
salam , saytetun kheyli khube matalebasham kheyli gabele fahm tozih dade sgode ,man mikham ye sayti tarahi konam vase madrese ki bacheha bian un sayto bebinan matalebike mikhan bardaran pul variz konan sabtenam konan va... bayad che barnameyiro balad basham ?
chetori saytamo tu internet garar bedam? mer30
محمدسینا معراجیان ۲۷ آذر ۱۳۹۱، ۱۹:۳۵
دو حالت داره یا خودتون برنامه نویسی میکنید که حداقل به دونستن.html , css نیاز دارید
یا میخواید همه چی براتون. آماده نصب شه که اون فقط کافیه به فضای مجازی بخرید توضیح بیشتر لازم بود بفرمایید عرض کنم
پایدار باشید
مهرنوش ۰۳ آذر ۱۳۹۱، ۱۸:۱۰
سلام ببخشید میخوام یه برنامه به زبان سی که بااستفاده ازتابع رندوم برای تابع بازگشتی برج هانوی 4عددتصادفی تولید کنه که 3تاش برای انتخاب تصادفی میله ها ویکی هم برای تعد اد دیسک باشه.تعدادی دیسک بااستفاده از میله کمکی م تب کنه.لطفا راهنمایی بفرمایید یابرنامه بفرستیدبه ایمیلم خیلی ممنون میشم..همشهریتون هستم دانشجوی مهندسی پزشکی پیام نورشیرازم.za-az132@yahoo.com
لقمان آوند ۰۴ آذر ۱۳۹۱، ۱۳:۳۲
برای تولید عدد رندم در c باید کتابخانه stdlib.h رو اینکلود کنید ، بعد از تابع رندم به این شکل استفاده کنید : (برای تولید عدد رندم بین 0 تا 5) :
random(6);
خود 6 تولید نخواهد شد ...
رضا ۰۶ شهریور ۱۳۹۱، ۱۴:۳۱
:cry: :cry: :cry: :cry: دیگه جوابمو نمیدین؟ :???: :???: :???:
لقمان آوند ۰۶ شهریور ۱۳۹۱، ۱۹:۵۲
سلام رضا جان
سوالی ندیدم از شما !
رضا ۰۲ شهریور ۱۳۹۱، ۱۶:۳۷
من بلد نیستم دیتابیس بسازم یه مدل کوچیک فقط 5 تا عدد بسازید تروخدا
reza ۰۹ مرداد ۱۳۹۱، ۱۸:۳۰
سلام.مرسی که جواب دادید.مثلا الان عدد تصادفی 115 بعد رفرش بشه 205 یا400.بره بالا.زیاد بشه
لقمان آوند ۰۹ مرداد ۱۳۹۱، ۲۳:۲۵
این نیازمند stateful بودن کد هست . یعنی یه جایی عدد رو دخیره کنید . مثل دیتابیس یا در فایل . هربار عدد رو ذخیره شده رو بخونید و یک مقدار تصادفی رو به اون اضافه کنید .
reza ۰۶ مرداد ۱۳۹۱، ۱۷:۴۷
سلام.خسته نباشید اموزش عای بود.غقط کدی نیست که اعداد تصادفی ایجاد کنه که با هر بار رفرش زیاد بشه نه بعضی وقتا کم بعضی وقتا زیاد.لطفا جوابمو بدید.در صورت امکان بران ایمیل کنید
لقمان آوند ۰۶ مرداد ۱۳۹۱، ۲۳:۴۸
یعنی چی ؟ با مثال توضیح بدید .
محمد ۰۲ اردیبهشت ۱۳۹۱، ۱۱:۱۷
دوست عزیز چرا صفحات سایت شما ویروس شناخته میشه؟

http://up.vatandownload.com/images/3yrp2oht7zvh29xpjzgi.jpg

http://up.vatandownload.com/images/3qqu67gmx8obz8kus6g.jpg
لقمان آوند ۰۲ اردیبهشت ۱۳۹۱، ۱۸:۱۹
سلام
این مشکل رفع شده بود . الان با webmastertools گوگل هم چک کردم . اونجا چنین مشکلی گزارش نشده . شاید توی کش مرورگر شما مونده باشه !
محمد ۰۲ اردیبهشت ۱۳۹۱، ۰۱:۳۱
سلام ممنون از مطلب مفیدوتون دوست عزیز
بنده خیلی احتیاج به این مطلب داشتم
فقط چطور میشه کدهای های تولید شده در یک فایل ذخیره بشه؟
یعنی بازدید کننده وقتی میاد رو صحفه یه جمله نوشته بشه و یه کد تصادفی بعد اون کد در یک فایل تکست یا دیتابیس ذخیره بشه؟
ممنون میشم جواب رو برام ایمیل کنید یا همینجا اعلام کنید
خیلی احتاج دارم بهش
با سپاس
لقمان آوند ۰۲ اردیبهشت ۱۳۹۱، ۰۶:۳۵
سلام
با خود جاوااسکریپت که نمی تونید چیزی رو در فایل ذخیره کنید . ولی می تونید یه درخواست Ajax برای یه اسکریپت php بفرستید که محتوایی که می خواید رو توی فایل ذخیره کنه .
pahmadi64 ۲۵ بهمن ۱۳۹۰، ۱۵:۲۷
بابا مرسی ممنون
:wink:
pahmadi64 ۲۴ بهمن ۱۳۹۰، ۱۶:۰۳
مطالباتون جالبه ولی کاش بگید از کجا باید شروع کرد
:sad:
pahmadi64 ۲۴ بهمن ۱۳۹۰، ۱۶:۰۲
یه استاد همیشه خونسرد :roll:
حتی اگه شاگردش خنگ باشه
pahmadi64 ۲۴ بهمن ۱۳۹۰، ۱۵:۵۵
حداقل بگید از کجا باید شروع کنم؟
آخه من مبتدی هستم تازه کار تازه کار
:smile:
لقمان آوند ۲۵ بهمن ۱۳۹۰، ۱۳:۲۸
سلام
برای شروع باید اول html و CSS یاد بگیری . اینا رو که یاد گرفتی ادامش بگو میخوای چیکار کنی تا بگم چی بخونی .
pahmadi64 ۲۴ بهمن ۱۳۹۰، ۱۵:۲۶
پس چرا جواب من نمیدید؟
من عقب افتادم از اولش برام ایمیل میکنید؟
لقمان آوند ۲۴ بهمن ۱۳۹۰، ۱۵:۵۱
عزیز کلا ربع ساعته که نظر دادی . به این زودی انتظار جواب داری !!! من که 24 ساعته آنلاین نیستم . آموزش ها هرچی هست گذاشتم تو سایت . سرچ کن در مورد مطالبی که میخوای .
موفق باشی
pahmadi64 ۲۴ بهمن ۱۳۹۰، ۱۵:۲۱
:cry:
pahmadi64 ۲۴ بهمن ۱۳۹۰، ۱۵:۱۶
سلام
میشه آموزش طراحی سایت را از اول برای من ایمیل کنید؟
ممنون میشوم
لقمان آوند ۲۴ بهمن ۱۳۹۰، ۱۵:۵۰
سلام
یعنی چی آموزش طراحی سایت از اول ؟ آموزش ها هرچی هست گذاشتم تو سایت . سرچ کن در مورد مطالبی که میخوای .
موفق باشی
محمد ۲۳ بهمن ۱۳۹۰، ۰۸:۴۹
سلام
لینک شما نیز اضافه شد ، ولی ببخشید چون عنوان لینکتون یکم طولانی بود و قسمت پیوند های وبلاگو بهم میریخت با عنوان آموزش طراحی وب لینکتون کردم.

امیدواریم از دست ما ناراحت نشید

موفق باشید و سربلند
لقمان آوند ۲۳ بهمن ۱۳۹۰، ۱۰:۱۷
سلام .
نه دوست عزیز ، چرا باید ناراحت بشم .
ممنون و متشکر
موفق باشید