menu

عدد تصادفی در لینوکس

عدد تصادفی در لینوکس

سه شنبه 12 خرداد 1394

در پست قبل، به معرفی این که device ها چی هستند پرداختیم و dev/null و همچنین کاربرد اون را به عنوان یک special device file معرفی کردیم. در این پست، قصد داریم به طریقه ی ایجاد یک عدد تصادفی در لینوکس بپردازیم و همچنین یک special device file دیگر را نیز در لینوکس، به شما معرفی کنیم.

اول از همه، عدد تصادفی چیست؟!

فکر کنم خیلی واضح باشه

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

اما چگونه توی لینوکس(bash) به تولید عدد تصادفی بپردازیم؟

اگر به یاد داشته باشید، در مطلبی که قبلا نوشته بودم، در خلال معرفی wildcard ها و redirection ها به معرفی متغیر های پیش فرض سیستم هم پرداختم.

در لینوکس، متغیر های پیشفرض زیادی وجود دارد که یکی از آنها که امروز با اون سروکار داریم متغیر هست به اسم RANDOM.

echo $RANDOM

//sample output: 11799

اما این متغیر چی هست؟

خب این هم واضح هست!

همونطور که از اسم این متغیر پیداست، این متغیر برای شما یک عدد تصادفی بین 0 و 32767 تولید میکنه(یه عدد تصادفی بین "دو به توان صفر ،منهای یک" و "دو به توان پانزده، منهای یک")

همچنین شما میتونید این متغیر را توی یه حلقه مثل زیر به کار ببرید تا یه دسته از اعداد تصادفی داشته باشید:

for i in {1..5}; do echo $RANDOM; done

یا خیلی کارهای دیگه که دوست داشته باشید با یه عدد تصادفی بکنید!

همینطور گاهی اوقات پیش میاد که نیاز هست تا یه عدد تصادفی بین دو تا عدد داشته باشیم

مثلا یه بازی حدس عدد میخوایم بنویسیم که توش نیاز هست که ما یه عدد تصادفی بین 10 تا 99 (یه عدد دو رقمی) داشته باشیم

اینجا میتونیم به طریق زیر، یه عدد تصادفی پیدا کنیم:

echo $((RANDOM%99+10))

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

الان میخواهیم که به معرفی یک special device file بپردازیم به اسم dev/random

این device، یک device از همان نوع /dev/null است که کار اون تولید یک عدد تصادفی است. این device پر از عدد تصادفی هست!

برای استفاده از اون هم کافیه با استفاده از دستوری مانند od، یک عدد تصادفی از این device بیرون بکشیم

مثل زیر:

od -An -N2 -i /dev/random

که توی این حالت، ما با استفاده از دستوری مثل od نوع فرمت اون را با استفاده از A روی حالت none گذاشتیم(بین حالت های Octa و Decimal و...) و بعد هم اون را با استفاده از i اعداد صحیح را از اون بیرون کشیدیم (مثلا با استفاده از f میتونستید اعداد float یا همون اعشاری را از اون بخونید که توی این عدد تصادفی ما نیازی به اون نداشتیم) و بعد هم با استفاده از N تعداد بایت های خروجی را محدود کردیم و روی 2 بایت گذاشتیم( میتونید عدد را تغییر بدید و نتیجه اش را ببینید!)

این هم یه پست دیگه از این تازه کار!

به پایان رسید این دفتر، حکایت همچنان باقیست....

منتشر شده در:

  • آواتار FATEMEH

    FATEMEH

    سه شنبه 24 شهریور 1394

    ارسال پاسخ

    ممنونم بخاطر مطالب مفیدیتون
  • آواتار FATEMEH

    مهدی علیخاصی

    پنجشنبه 2 مهر 1394

    خواهش میکنم. وظیفه است
ارسال نظر
خوانا نیست؟تعویض کد