فهرست سرفصل‌های NumPy
خانه (HOME) مقدمه (Intro) شروع کار (Getting Started) ساخت آرایه ها (Creating Arrays) ایندکس گذاری آرایه (Array Indexing) برش آرایه (Array Slicing) انواع داده (Data Types) کپی در برابر View (Copy vs View) شکل آرایه (Array Shape) تغییر شکل آرایه (Array Reshape) حلقه روی آرایه (Array Iterating) ترکیب آرایه ها (Array Join) تقسیم آرایه ها (Array Split) جستجو در آرایه (Array Search) مرتب سازی آرایه (Array Sort) فیلتر کردن آرایه (Array Filter) مقدمه تصادفی سازی (Random Intro) توزیع داده (Data Distribution) جابه جایی تصادفی (Random Permutation) ماژول Seaborn (Seaborn Module) توزیع نرمال (Normal Distribution) توزیع دوجمله ای (Binomial Distribution) توزیع پواسون (Poisson Distribution) توزیع یکنواخت (Uniform Distribution) توزیع لجستیک (Logistic Distribution) توزیع چندجمله ای (Multinomial Distribution) توزیع نمایی (Exponential Distribution) توزیع کای دو (Chi Square Distribution) توزیع ریلی (Rayleigh Distribution) توزیع پارتو (Pareto Distribution) توزیع زیف (Zipf Distribution) مقدمه ufunc (ufunc Intro) ساخت تابع ufunc (ufunc Create Function) حساب ساده با ufunc (ufunc Simple Arithmetic) گرد کردن اعشار با ufunc (ufunc Rounding Decimals) لگاریتم ها با ufunc (ufunc Logs) جمع ها با ufunc (ufunc Summations) حاصل ضرب ها با ufunc (ufunc Products) تفاضل ها با ufunc (ufunc Differences) کمترین مضرب مشترک با ufunc (ufunc Finding LCM) بزرگترین مقسوم علیه مشترک با ufunc (ufunc Finding GCD) توابع مثلثاتی با ufunc (ufunc Trigonometric) توابع هذلولوی با ufunc (ufunc Hyperbolic) عملیات مجموعه ای با ufunc (ufunc Set Operations) ویرایشگر (Editor) آزمون (Quiz) تمارین (Exercises) سرفصل دوره (Syllabus) برنامه مطالعه (Study Plan) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
NumPy

NumPy — مقدمه تصادفی سازی (Random Intro)

آخرین بروزرسانی: 1404/08/25

مقدمه تصادفی سازی (Random Intro)

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

عدد تصادفی در برنامه نویسی یعنی چه؟

عدد تصادفی (Random Number) لزوما هر بار کاملا جدید نیست. مهم این است که نتوانی عدد بعدی را منطقی حدس بزنی.

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

اعداد شبه تصادفی و کاملا تصادفی

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

به این نوع اعداد می گویند شبه تصادفی (Pseudo Random). یعنی برای انسان تصادفی به نظر می رسند، اما برای کامپیوتر قابل ردگیری هستند.

برای عدد کاملا تصادفی باید از دنیای بیرون داده بگیریم؛ مثلا حرکت ماوس، فشار دکمه ها یا نویز شبکه.

چنین چیزهایی لازم است وقتی موضوع امنیت مهم است؛ مثل ساخت کلید رمزنگاری.

در نامپای و بیشتر پروژه های معمولی از همین اعداد شبه تصادفی استفاده می کنیم؛ چون ساده و سریع هستند.

ماژول random در نامپای

نامپای یک ماژول به اسم random دارد. با این ماژول می توانیم انواع اعداد تصادفی بسازیم؛ عدد صحیح، اعشاری و حتی آرایه های چندبعدی.

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

ساخت عدد صحیح تصادفی

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

from numpy import random

x = random.randint(100)

print(x)

مشاهده در ادیتور

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

ساخت عدد اعشاری تصادفی

برای عدد اعشاری تصادفی از تابع rand() کمک می گیریم. خروجی عددی بین 0 و 1 است.

from numpy import random

x = random.rand()

print(x)

مشاهده در ادیتور

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

ساخت آرایه تصادفی از اعداد صحیح

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

در randint() می توانیم پارامتر size را برای شکل آرایه مشخص کنیم.

آرایه یک بعدی از اعداد صحیح

در این مثال یک آرایه 1 بعدی با 5 عدد تصادفی بین 0 تا 99 ساخته می شود.

from numpy import random

x = random.randint(100, size=(5))

print(x)

مشاهده در ادیتور

آرایه دوبعدی از اعداد صحیح

حالا همان کار را برای آرایه دوبعدی انجام می دهیم؛ سه ردیف و پنج ستون.

from numpy import random

x = random.randint(100, size=(3, 5))

print(x)

مشاهده در ادیتور

در مسائل علمی و تمرین های الگوریتم، این آرایه ها برای تست و شبیه سازی خیلی مفید هستند.

ساخت آرایه تصادفی از اعداد اعشاری

تابع rand() هم می تواند آرایه بسازد. کافی است اندازه را به شکل پارامتر به تابع بدهیم.

آرایه یک بعدی از اعشاری تصادفی

در این مثال یک آرایه 1 بعدی با 5 عدد اعشاری تصادفی ساخته می شود.

from numpy import random

x = random.rand(5)

print(x)

مشاهده در ادیتور

آرایه دوبعدی از اعشاری تصادفی

اینجا هم آرایه دوبعدی با سه ردیف و پنج ستون از عددهای اعشاری تصادفی می سازیم.

from numpy import random

x = random.rand(3, 5)

print(x)

مشاهده در ادیتور

این نوع آرایه ها در شبیه سازی، یادگیری ماشین و بازی ها خیلی کاربرد دارند.

انتخاب تصادفی از یک لیست

گاهی به جای عدد کاملا آزاد، می خواهیم از بین چند گزینه مشخص انتخاب کنیم. اینجا تابع choice() به کار می آید.

تابع choice() یک آرایه ورودی می گیرد و یکی از مقدارها را تصادفی برمی گرداند.

from numpy import random

x = random.choice([3, 5, 7, 9])

print(x)

مشاهده در ادیتور

این شبیه قرعه کشی بین چند نفر است؛ هر بار یک نفر برنده می شود.

می توانیم از choice() بخواهیم یک آرایه کامل از انتخاب های تصادفی برگرداند. برای این کار از پارامتر size استفاده می کنیم.

from numpy import random

x = random.choice([3, 5, 7, 9], size=(3, 5))

print(x)

مشاهده در ادیتور

این کار برای ساختن جدول های تمرینی، شبیه سازی آزمون یا داده آزمایشی خیلی مناسب است.

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

تمرین کوچک برای تصادفی سازی

برای تمرین بهتر با اعداد تصادفی در نامپای این سه کار را انجام بده:

  1. با randint() نمره های تصادفی برای 10 دانش آموز بساز.
  2. با rand() احتمال برد یک تیم را شبیه سازی کن.
  3. با choice() هر بار یک دانش آموز را برای پاسخ گویی انتخاب کن.

جمع بندی سریع

  • کامپیوتر معمولا عدد شبه تصادفی می سازد، نه کاملا تصادفی.
  • ماژول random نامپای برای ساخت اعداد تصادفی استفاده می شود.
  • randint() عدد صحیح تصادفی می سازد؛ با پارامتر size آرایه می سازد.
  • rand() عدد اعشاری بین 0 و 1 تولید می کند.
  • choice() از بین چند مقدار مشخص، انتخاب تصادفی انجام می دهد.