campaign-edianeh-98

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



visibility  
mode_comment   ۴۳

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

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

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

:: خوب ، بریم سر اصل مطلب . در javascript برای تولید اعداد random از متد ()Math.random استفاده میشه . متد ()Math.random یک عدد اعشاری بین 0 و 1 رو تولید میکنه . به طور مثال اگر شما کد زیر رو درون تگ body در صفحه ی وب قرار بدید یک عدد اعشاری بین 0 و 1 ، با بیش از ده رقم اعشار براتون چاپ میشه .

:: خروجی این کد (یک عدد تصادفی اعشاری بین 0 و 1) :  (با رفرش صفحه عددی جدید می بینید)

در کد فوق عدد تصادفی توسط متد ()Math.random تولید شده و در متغیر randomNumber قرار میگیره و مقدار این متغیر توسط متد  ()document.write در صفحه ی وب چاپ میشه .

:: تولید اعداد اعشاری تصادفی بین صفر و عددی دلخواه :

حالا اگربخواید اعداد بزرگتری رو به صورت رندم تولید کنید کافیه عدد تولید شده توسط متد رندم رو در حداکثر عدد دلخواهتون ضرب کنید . مثلا اگر میخواید یک عدد رندم بین 0 تا 100 تولید کنید ، همون کد بالا رو به شکل زیر داریم :

:: خروجی این کد (یک عدد تصادفی اعشاری بین 0 و 100) :  (با رفرش صفحه عددی جدید می بینید)

:: تولید اعداد صحیح تصادفی بین صفر و عددی دلخواه :

برای اینکه اعداد تصادفی تولید شده رو از حالت اعشاری دربیارید و اعداد رو به صورت صحیح و بدون قسمت اعشاری داشته باشید باید از متد ()Math.floor استفاده کنید . این تابع یک عدد اعشاری رو به عنوان ورودی میگیره و خروجیش جزء صحیح اون عدد هست . جزء صحیح همون بزرگترین عدد صحیح کوچکتر از یک عدد اعشاریه . پس برای تولید اعداد صحیح بین 0 تا یک عدد دلخواه مثل 100 ، کد رو به شکل زیر داریم :

در این کد ابتدا یک عدد اعشاری بین 0 و 1 توسط تابع random تولید میشه ، بعد ضرب در 100 میشه و سپس عدد حاصل ،که یک عدد اعشاری بین 0 تا 100 هست ، جزء صحیحش توسط متد floor گرفته میشه و در متغیر randomNumber قرار میگیره .

:: خروجی این کد (یک عدد تصادفی صحیح بین 0 و 100) :  (با رفرش صفحه عددی جدید می بینید)

:: تولید اعداد صحیح تصادفی بین دو عدد دلخواه :

شاید دوست نداشته باشید عدد تصادفی از 0 تا یه عدد دلخواه باشه . و بخواید مثلا عدد تولید شده بین 80 تا 100 باشه . انجام اینکار هم سادست . فرض کنید که می خواید اعداد تصادفی تولید شده بین دو عدد x و y باشه . کافیه عدد باند پایین یعنی x رو به عدد رندم تولید شده اضافه کنید و تابع رندم رو به جای اینکه در y ضرب کنید در y-x ضرب کنید . مثلا اگر بخواید اعداد تصادفی تولید شده بین 80 و 92 باشند ، کد رو باید به صورت زیر بنویسید :

12 همون اختلاف بین 92 و 80 هست ، و 80 رو هم که با عدد تصادفی تولید شده جمع کردیم . در واقع حداقل می خواید 80 رو داشته باشید به اضافه ی یک عدد تصادفی بین 0 تا 12 ! :: خروجی این کد (یک عدد تصادفی صحیح بین 80 و 92) :  (با رفرش صفحه عددی جدید می بینید)

:: تابع تولید اعداد صحیح تصادفی بین دو عدد دلخواه :

:: در آخر هم یک تابع ساده براتون نوشتم که دیگه نخواید کد اضافه بزنید ! به راحتی می تونید کد زیر رو درون تگ head اضافه کنید :

و درون تگ body به همین راحتی از اون استفاده کنید(که در مثال زیر چهار بار برای دامنه های مختلف عددی استفاده شده) :

تگ br هم که استفاده شده برای نمایش هر عدد در یک خط جدید است . :: خروجی کد (چهار عدد تصادفی در دامنه های ذکر شده در کد) :  (با رفرش صفحه اعداد نو میبینید)

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

متخصص جاوا اسکریپت
با جاوا اسکریپت جادوگری کنید! آیا می دونید با زبان جاوااسکریپت می تونید، برای فرانت اند و بک اند وبسایت ها برنامه نویسی کنید؟ همینطور اپلیکیشن دسکتاپ و موبایل بسازید؟ اگر دوست داری اینکارها رو انجام بدی و React, ElectronJS, ReactNative, NodeJS,MongoDB و ... رو تو یه دوره یاد بگیری، متخصص جاوااسکریپت سون لرن رو حتما ببین : متخصص جاوا اسکریپت arrow_back
comment دیدگاه کاربران
محمد

سلام
لینک شما نیز اضافه شد ، ولی ببخشید چون عنوان لینکتون یکم طولانی بود و قسمت پیوند های وبلاگو بهم میریخت با عنوان آموزش طراحی وب لینکتون کردم.

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

موفق باشید و سربلند

لقمان آوند

سلام .
نه دوست عزیز ، چرا باید ناراحت بشم .
ممنون و متشکر
موفق باشید

pahmadi64

سلام
میشه آموزش طراحی سایت را از اول برای من ایمیل کنید؟
ممنون میشوم

لقمان آوند

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

pahmadi64

😥

pahmadi64

پس چرا جواب من نمیدید؟
من عقب افتادم از اولش برام ایمیل میکنید؟

لقمان آوند

عزیز کلا ربع ساعته که نظر دادی . به این زودی انتظار جواب داری !!! من که 24 ساعته آنلاین نیستم . آموزش ها هرچی هست گذاشتم تو سایت . سرچ کن در مورد مطالبی که میخوای .
موفق باشی

pahmadi64

حداقل بگید از کجا باید شروع کنم؟
آخه من مبتدی هستم تازه کار تازه کار
🙂

لقمان آوند

سلام
برای شروع باید اول html و CSS یاد بگیری . اینا رو که یاد گرفتی ادامش بگو میخوای چیکار کنی تا بگم چی بخونی .

pahmadi64

یه استاد همیشه خونسرد 🙄
حتی اگه شاگردش خنگ باشه

pahmadi64

مطالباتون جالبه ولی کاش بگید از کجا باید شروع کرد
🙁

pahmadi64

بابا مرسی ممنون
😉

محمد

سلام ممنون از مطلب مفیدوتون دوست عزیز
بنده خیلی احتیاج به این مطلب داشتم
فقط چطور میشه کدهای های تولید شده در یک فایل ذخیره بشه؟
یعنی بازدید کننده وقتی میاد رو صحفه یه جمله نوشته بشه و یه کد تصادفی بعد اون کد در یک فایل تکست یا دیتابیس ذخیره بشه؟
ممنون میشم جواب رو برام ایمیل کنید یا همینجا اعلام کنید
خیلی احتاج دارم بهش
با سپاس

لقمان آوند

سلام
با خود جاوااسکریپت که نمی تونید چیزی رو در فایل ذخیره کنید . ولی می تونید یه درخواست Ajax برای یه اسکریپت php بفرستید که محتوایی که می خواید رو توی فایل ذخیره کنه .

محمد

سلام
ممنون از راهنمایتون با جستجو کد زیر ور از از یک سایت خارجی پیدا کردم که بعد از اجرا کردن فقط یک کلمه Error تو صحفه میاد
ممنون میشم این کد رو تکمیل یا اشکال زدایی کنید یا شاید مشکل از من باشه و منو راهنمایی کنید
در ضمن من در سی پنل دیتابیس براش ساختم و یوزر هم اد کردم که در خط 29 مشخصات رو وارد کردم

bad code

لقمان آوند

سلام دوست عزیز
متاسفانه کدتون بد کپی شده بود . لطف کنید اونو در یه فایل متنی بزارید و برام میل کنید و توضیح بدید پی می خواید .

محمد

دوست عزیز چرا صفحات سایت شما ویروس شناخته میشه؟

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

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

لقمان آوند

سلام
این مشکل رفع شده بود . الان با webmastertools گوگل هم چک کردم . اونجا چنین مشکلی گزارش نشده . شاید توی کش مرورگر شما مونده باشه !

reza

سلام.خسته نباشید اموزش عای بود.غقط کدی نیست که اعداد تصادفی ایجاد کنه که با هر بار رفرش زیاد بشه نه بعضی وقتا کم بعضی وقتا زیاد.لطفا جوابمو بدید.در صورت امکان بران ایمیل کنید

لقمان آوند

یعنی چی ؟ با مثال توضیح بدید .

reza

سلام.مرسی که جواب دادید.مثلا الان عدد تصادفی 115 بعد رفرش بشه 205 یا400.بره بالا.زیاد بشه

لقمان آوند

این نیازمند stateful بودن کد هست . یعنی یه جایی عدد رو دخیره کنید . مثل دیتابیس یا در فایل . هربار عدد رو ذخیره شده رو بخونید و یک مقدار تصادفی رو به اون اضافه کنید .

رضا

میشه یکی بسازید ببینم / تروخدا خواهش میکنم 😥 😥 😥 😥

لقمان آوند

سلام
کد ساختن که زمانگیره . ولی کلیتش اینطوره . در یک فایل یا دیتابیس عدد صفر رو در ابتدا ذخیره کن .
یک عدد تصادفی انتخاب کن و با عدد موجود در فایل/دیتابیس جمع کن و نمایش بده و جمع حاصل رو به جای عدد قبلی ذخیره کن .
هر بار اینکار رو انجام بده .

رضا

من بلد نیستم دیتابیس بسازم یه مدل کوچیک فقط 5 تا عدد بسازید تروخدا

رضا

😥 😥 😥 😥 دیگه جوابمو نمیدین؟ 😕 😕 😕

لقمان آوند

سلام رضا جان
سوالی ندیدم از شما !

مهرنوش

سلام ببخشید میخوام یه برنامه به زبان سی که بااستفاده ازتابع رندوم برای تابع بازگشتی برج هانوی 4عددتصادفی تولید کنه که 3تاش برای انتخاب تصادفی میله ها ویکی هم برای تعد اد دیسک باشه.تعدادی دیسک بااستفاده از میله کمکی م تب کنه.لطفا راهنمایی بفرمایید یابرنامه بفرستیدبه ایمیلم خیلی ممنون میشم..همشهریتون هستم دانشجوی مهندسی پزشکی پیام نورشیرازم.za-az132@yahoo.com

لقمان آوند

برای تولید عدد رندم در c باید کتابخانه stdlib.h رو اینکلود کنید ، بعد از تابع رندم به این شکل استفاده کنید : (برای تولید عدد رندم بین 0 تا 5) :
random(6);
خود 6 تولید نخواهد شد …

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 نیاز دارید
یا میخواید همه چی براتون. آماده نصب شه که اون فقط کافیه به فضای مجازی بخرید توضیح بیشتر لازم بود بفرمایید عرض کنم
پایدار باشید

پروانه

سلام ببخشید میشه منابع این مطالب رو بگید از کجان؟
از رو چه کتابایی..مقالاتی..استفاده کردید
لازم دارم مرسی

لقمان آوند

سلام
این مطلب رو خودم نوشتم . از دونسته های قبلی و از جای خاصی استفاده نشده .

پروانه

میشه کتابی بهم معرفی کنید راجع به روشهای تولید اعداد تصادفی؟

لقمان آوند

در این رابطه کتابی نمی شناسم . صفحه ویکی پدیا این مطلب رو بخونید . شاید کمکی کنه :
http://en.wikipedia.org/wiki/Random_number_generation

hassan

SALAM KHASTE NABASHID
man ye barnameh mikham ke zarb 2 adad be sorat tsadofi njam bedeh

لقمان آوند

یعنی چی ؟ یعنی دو عدد رندم انتخاب کنه و اونا رو ضرب کنه ؟ خوب از طریقی که در این پست گفته 2 تا عدد رندم بدست بیار و در هم ضرب کن .

hassan

خسته نباشید آره دو عدد انتخاب کنه و به صورت تصادفی ضرب کنه

hassan

اگه کد جاواشو برام بفرستین ممنون میشم html شو بلدم مرسی

لقمان آوند

خوب سادست که . ضرب دو عدد تصادفی بین 0 تا 100 .
var n1= Math.floor(Math.random() * 100);
var n2= Math.floor(Math.random() * 100);
var m=n1*n2;

hassan

استاد گفته باید با for درست بشه

مهدی

سلام
من میخام عکس هدر وبلاگم به صورت تصادفی نغییر کنه
برای این کار اولا باید عدد تصادفی تولید کنم و بعدش یه چیزی مانند if در زبان c داشته باشم تا به یکی از عکس ها ارجاع بدم 💡
من از بلوگفا استفاده میکنم
میشه یه نمونه کد بدین؟
ممنون میشم اگه به ایمیلم جواب بدین
خیلی مرسی 😉

شلیر

سلام من باید اشعار حافظ رو توی یک ارایه قراربدم وبعد با کلیک روی یه دکمه فال بگیره.
ولی اصلا انجام نمیشه
ابزارهای شماهم کار نمیکنه برای یه سایت تمرین کلاسی میخوام
سپاس

add_circle ارسال دیدگاه

خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :