Random Numbers in NumPy

عدد تصادفی چیست؟

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

شبه تصادفی و تصادفی واقعی

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

اعداد تصادفی تولید شده توسط یک الگوریتم را اعداد شبه تصادفی می‌نامند (pseudo random).

آیا می‌توان اعداد تصادفی واقعی تولید کرد؟

بله! جهت تولید اعداد تصادفی واقعی روی کامپیوتر نیاز داریم که داده‌هایی تصادفی را از یک منبع خارجی دریافت کنیم. این منبع خارجی معمولاً کلید صفحه کلید (کیبورد)، حرکت ماوس، داده‌های روی شبکه و غیره می‌باشد.

البته لازم به ذکر است که به اعداد تصادفی واقعی نیازی نداریم مگر آنکه بحث امنیت (مثلاً رمزگذاری) و یا اساس کار اپلیکیشن تصادفی بودن باشد (مانند میز رولت چرخان دیجیتالی).

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

تولید اعداد تصادفی

NumPy مدول random را جهت کار با اعداد تصادفی معرفی کرده است. در کد زیر با استفاده از این مدول یک عدد تصادفی صحیح بین صفر و 100 تولید می‌شود.


from numpy import random

x = random.randint(100)

print(x)

خروجی:

برای تولید اعداد تصادفی اعشاری (float) می‌توان از دستور random.rand() استفاده کرد. کد زیر یک عدد اعشاری بین صفر و یک تولید می‌کند.


from numpy import random

x = random.rand()

print(x)

خروجی:

تولید آرایه‌های تصادفی

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

با اضافه کردن پارامتر size به تابع شیء random.randint() می‌توانید شکل آرایه را به این تابع شیء جهت تولید یک آرایه تصادفی با اعداد صحیح بدهید.

تولید یک آرایه یک بعدی تصادفی با اعداد صحیح بین صفر و 100:


from numpy import random

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

print(x)

خروجی:

تولید یک آرایه دو بعدی تصادفی با اعداد صحیح بین صفر و 100:


from numpy import random

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

print(x)

خروجی:

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


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)

خروجی: