021-71053903 [email protected] پشتیبانی از شنبه تا چهارشنبه ساعت 9 الی 16

کتابخانه random در پایتون (مرجع کامل)

آموزش کتابخانه Random

سلام خدمت تمامی شما کاربران خوب وبسایت پایتونی ها با یک آموزش تخصصی دیگه در خدمتتون هستیم از سری آموزش های وبسایت پایتونی ها در این آموزش می خوایم راجبه یکی از جالب ترین کتابخانه های پایتون به نام کتابخانه random در پایتون صحبت کنیم خوب حالا کار این کتابخانه دقیقا به چه شکلی هستش و چه کاری رو انجام میده ؟

به چه صورت هستش در ادامه توضیح خواهیم داد.

مقاله منبع کتابخانه Random

https://docs.python.org/3/library/random.html

خوب طبق توضیح دقیقی که در صفحه اصلی این کتابخانه در سایت Python.org وجود داره و توضیحاتی که داده به این شکل هستش:

کتابخانه Random چیست ؟

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

کتابخانه random() برای تولید اعداد تصادفی در پایتون استفاده می شود. در واقع تصادفی در کار نیست، بلکه برای تولید اعداد شبه تصادفی استفاده می شود. این بدان معناست که این اعداد به طور تصادفی تولید شده را می توان تعیین کرد.

خوب با توجه به توضیح بالا که کاملا ساده هستش این کتابخانه به 2 صورت مختلف سازنده انتخاب ها و یا اعداد تصادفی هستش به صورت ساده شده:

برای اعداد صحیح، انتخاب یکنواخت از یک محدوده را انجام می دهد.

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

 

آموزش نصب کتابخانه Random

کتابخانه random جز کتابخانه هایی است که به صورت پیش فرض بر روی سیستم که پایتون نصب می شود، وجود دارد.

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

pip install random

 

 

نکته* ::

تقریباً همه توابع کتابخانه به تابع اصلی random() بستگی دارد که یک شناور تصادفی یکنواخت در محدوده نیمه باز [0.0, 1.0) ایجاد می کند. پایتون از Mersenne Twister به عنوان مولد تولید کننده تصادفی به عنوان هسته خود استفاده می کند. این هسته شناور های 53 بیتی تولید می کنند و دارای دوره 2(**19937-1) هستند. پیاده سازی این کتابخانه در Cython هم سریع و هم ایمن است. Mersenne Twister یکی از آزمایش‌شده‌ترین مولدهای اعداد تصادفی جهان است. با این حال، از آنجایی که کاملاً برای تمامی مقاصد تصادفی به صورت اتوماسیون مناسب است اما برای مقاصد رمزنگاری اصلا مناسب نیست پس به فکر به روش دیگر برای اهداف رمزنگاری خود باشید.

 

نکته* ::

توابع ارائه شده توسط این کتابخانه در واقع متدهای محدود شده ای هستند که از یک نمونه مخفی از کلاس random.Random گرفته شده اند. می‌توانید نمونه‌های تصادفی خودتان را برای به دست آوردن ژنراتورهایی که حالت مشترک ندارند، نمونه‌سازی کنید و از آن ها استفاده کنید، به این موضوع دقت داشته نمونه سازی این مولد اصلا کار ساده این نیست و شاید روز ها و حتی ماه ها  برای یک کاربر مبتدی زمان ببرد پس تا جایی که می توانید سعی کنید از مولد هایی که از قبل ساخته شده اند استفاده کنید.

 

نکته* ::

کتابخانه Random همچنین کلاس SystemRandom را در دل خود جای داده که از تابع سیستم ()os.urandom برای تولید اعداد تصادفی از منابع ارائه شده توسط سیستم عامل استفاده می کند.

 

هشدار* ::

ژنراتورهای تصادفی این کتابخانه نباید برای اهداف امنیتی و رمزنگاری استفاده شوند. برای مصارف امنیتی یا رمزنگاری،باید از کتابخانه Secrets استفاده کنید.

 

لیست کل توابع مورد نیاز در کتابخانه Random

  • seed(): این تابع به صورت پیش فرض یک عدد را دریافت می کند و بر اساس آن یه مقدار تصادفی ثابت ایجاد می کند.
  • getstate(): یک شی را با وضعیت فعلی که در آن وجود دارد برای شما برمیگرداند
  • setstate(): نقش این تابع بازیابی اعداد تصادفی است که قبلا چاپ شده است
  • getrandbits(): یک عدد نشان دهنده بیت های تصادفی را برمی گرداند
  • randrange(): یک عدد داده شده که در محدوده است که برنامه نویس آن را تعیین می کند برای کاربر برمیگرداند.
  • randint(): یک عدد تصادفی را برای کاربر برمیگرداند.
  • choice(): یک انتخاب تصادفی از بین انتخاب هایی که برای کتابخانه تعریف کرده این برمیگرداند
  • choices(): یک لیست از انتخاب های تصادفی را برای شما برمیگرداند.
  • shuffle(): از شما یک دنباله دریافت می کند و آن دنباله را بهم میریزد و برای شما برمیگرداند
  • sample(): نمونه معینی از یک دنباله را برمی گرداند
  • random(): یک عدد شناور تصادفی بین 0 و 1 را برمی‌گرداند
  • uniform(): یک عدد شناور تصادفی بین دو پارامتر داده شده را برمی‌گرداند
  • triangular(): یک عدد شناور تصادفی بین دو پارامتر داده شده را برمی گرداند، همچنین می توانید یک پارامتر حالت برای تعیین نقطه میانی بین دو پارامتر دیگر تنظیم کنید.
  • betavariate():یک عدد شناور تصادفی بین 0 و 1 بر اساس توزیع بتا (مورد استفاده در آمار) برمی‌گرداند.
  • expovariate(): یک عدد شناور تصادفی را بر اساس توزیع نمایی (مورد استفاده در آمار) برمی‌گرداند.
  • gammavariate(): یک عدد شناور تصادفی بر اساس توزیع گاما (استفاده شده در آمار) را برمی‌گرداند.
  • gauss(): یک عدد شناور تصادفی را بر اساس توزیع گاوسی (که در نظریه‌های احتمال استفاده می‌شود) برمی‌گرداند.
  • lognormvariate(): یک عدد شناور تصادفی را بر اساس توزیع لگ نرمال (که در نظریه‌های احتمال استفاده می‌شود) برمی‌گرداند.
  • normalvariate(): یک عدد شناور تصادفی بر اساس توزیع نرمال (مورد استفاده در نظریه‌های احتمال) را برمی‌گرداند.
  • vonmisesvariate(): یک عدد شناور تصادفی را بر اساس توزیع فون میزس (که در آمار جهت دار استفاده می شود) برمی گرداند.
  • paretovariate(): یک عدد شناور تصادفی را بر اساس توزیع پارتو (که در نظریه‌های احتمال استفاده می‌شود) برمی‌گرداند.
  • weibullvariate(): یک عدد شناور تصادفی بر اساس توزیع Weibull (استفاده شده در آمار) را برمی‌گرداند.

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

 

 

مثال ها

seed()

برای شروع دنباله به پارامتری نیاز است که seed نامیده می شود. به این معنی که با توجه به همان seed، هر بار دنباله یکسانی از اعداد را تولید می کند.

تابع seed() مولد اعداد شبه تصادفی را با در نظر گرفتن یک عدد صحیح به عنوان آرگومان، مانند 1 یا 7، نشان می دهد. میلی ثانیه از دوران (1970).

به صورت مثال به کد زیر توجه کنید:

import random

random.seed(5)
print(random.random())

در مثال کد بالا هر بار که شما از مقدا 5 برای seed استفاده کنید خروجی زیر را دریافت خواهید کرد:

آموزش کتابخانه Random

آموزش کتابخانه Random

 

مثال بیشتر از seed():

from random import seed
from random import random

seed(5)

print(random(), random(), random())

seed(5)

print(random(), random(), random())

خروجی:

0.6229016948897019 0.7417869892607294 0.7951935655656966
0.6229016948897019 0.7417869892607294 0.7951935655656966

 


getstate() و setstate()

متد getstate() ماژول تصادفی یک شی را با وضعیت داخلی فعلی مولد اعداد تصادفی برمی گرداند. این شی را می توان به متد setstate() برای بازیابی حالت ارسال کرد. هیچ پارامتری در این روش ارسال نشده است.

به کد زیر دقت کنید:

import random

# تعریف متغییر state
state = random.getstate()
 
# نمایش انتخاب در بازه عددی 20 و 10 شماره معیین
print(random.sample(range(20), k = 10))
 
# استفاده از setstate برای ذخیره متغییر های تصادفی
random.setstate(state)
 
# نمایش بازه عددی 20 و اینبار نمایش فقط 5 عدد از آن بازه عددی
print(random.sample(range(20), k = 5))

خروجی :

[12, 17, 3, 7, 0, 11, 18, 6, 4, 2]
[12, 17, 3, 7, 0]

نکته* ::

ممکن است خروجی ما با خروجی شما متفاوت باشد.

 


getrandbits()

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

 

به صورت مثال به کد زیر دقت کنید:

import random

random.getrandbits(32)

خروجی :

آموزش کتابخانه Random

آموزش کتابخانه Random

 


randrange()

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

متد ()random.randrange یک عنصر انتخاب شده تصادفی را از محدوده ایجاد شده توسط آرگومان های start، stop و step برمی گرداند. مقدار start به طور پیش فرض 0 است. به طور مشابه، مقدار step به طور پیش فرض 1 است.

strt = نقطه شروع

stop = نقطه پایان

step = تعداد گام ها

به مثال زیر توجه کنید :

import random
 

print ("یک عدد تصادفی بین 0 تا 100 : ",end="")
print (random.randrange(100))
 

print ("یک عدد تصادفی بین 50 تا 100 : ",end="")
print (random.randrange(50,100))
 

# skip 2
print ("یک عدد تصادفی بین 50 تا 100 با گام 2 : ",end="")
print (random.randrange(50,100,2))

خروجی:

آموزش کتابخانه Random

آموزش کتابخانه Random


randint()

یک تابع داخلی از کتابخانه Random در Python3 است. تابع randint() تولید اعداد  صحیح تصادفی را بر عهده دارد.

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

به مثال زیر دقت کنید:

print(random.randrange(1, 10))
print(random.randrange(1, 10, 2))
print(random.randrange(0, 101, 10))

خروجی :

آموزش کتابخانه Random

آموزش کتابخانه Random

نکته* ::

توجه داشته باشید برای استفاده از این تابع می تواند از اعدادی در بازه منفی نیز استفاده کنید. به صورت مثال (-5, -10).


choice()

Choice() یک تابع داخلی در زبان برنامه نویسی پایتون است که یک آیتم تصادفی را از یک لیست، تاپل یا رشته برمی گرداند.

به صورت مثال به کد زیر دقت کنید:

import random
  
#List
list1 = [1, 2, 3, 4, 5, 6] 
print(random.choice(list1))

#tuple
tuple1 = (1, 2, 3, 4, 5, 6)
print(random.choice(tuple1))

#string
reshte = 'Pythoniha.ir'
print(random.choice(reshte))

خروجی :

آموزش کتابخانه Random

آموزش کتابخانه Random

 


choices()

به طور ساده کتابخانه random با استفاده از تابع choices() یک لیست از انتخاب های تصادفی را برای شما بر میگداند به صورت مثال به کد زیر دقت کنید:

import random


list1 = ['1', '2', '3', 'yek', 'do', 'se']
print('choices 1 ====>', random.choices(list1))

خروجی :

 

خوب حالا اگر ما بخواهیم تعداد بیشتری انتخاب در یک لیست برای برگردانده شود باید از پارامتر هایی که در تابع Choices قراردارد استفاده کنیم این پارامتر ها به شرح زیر است:

مولفه های :
1. sequence ی: ک پارامتر اجباری است که می تواند لیست، تاپل یا رشته باشد.
2. وزن ها یا weights : یک پارامتر اختیاری است که برای وزن کردن امکان برای هر مقدار استفاده می شود.
3. cum_weights یک پارامتر اختیاری است که برای وزن کردن امکان برای هر مقدار استفاده می شود اما در این امکان انباشته می شود.
4. k :یک پارامتر اختیاری است که برای تعیین طول لیست برگشتی استفاده می شود.

 

خوب حالا با توجه به پارامتر های بالا به تکه کد زیر دقت کنید:

import random


list1 = ['1', '2', '3', 'yek', 'do', 'se']
print('choices 1 ====>', random.choices(list1, k = 5))

خروجی :

آموزش کتابخانه Random

آموزش کتابخانه Random


shuffle()

متد random.shuffle() به طور تصادفی عناصر موجود در یک لیست را مرتب می کند. به تکه کد زیر دقت کنید:

import random


number = [62, 22, 3, 98, 41]
random.shuffle(number)
print(number)

خروجی:

آموزش کتابخانه Random

آموزش کتابخانه Random

 


sample()

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

به صورت مثال به تکه کد زیر دقت کنید:

import random


list1 = ['1', '2', '3', 'yek', 'do', 'se']
print('Sample  ====>', random.sample(list1, k = 3))

خروجی :

آموزش کتابخانه Random

آموزش کتابخانه Random


random()

این تابع یک عدد تصادفی بین 0 تا 1 را برای شما برمیگرداند به صورت مثال:

import random

random.random()

خروجی :

0.9163612263190472

نکته* ::

در هر بار استفاده ممکن است خروجی ها متفاوت باشند.


uniform()

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

برای مثال به تکه کد زیر دقت کنید:

import random

a = 10
b = 20
  

print("عدد انتخاب شده در بازه مورد نظر : ", end ="")
print(random.uniform(a, b))

خروجی نرم افزار:

آموزش کتابخانه Random

آموزش کتابخانه Random


triangular()

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

import random
  
low = 10
high = 100
mode = 20
  

print(random.triangular(low, high, mode))

خروجی :

آموزش کتابخانه Random

آموزش کتابخانه Random


betavariate()

برای برگرداندن یک عدد اعشاری تصادفی با توزیع بتا استفاده می شود. مقدار برگشتی بین 0 و 1 است.

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

به مثال زیر توجه کنید:

import random
  

alpha = 5
beta = 10
  

print(random.betavariate(alpha, beta))

خروجی:

0.3651461740194061

expovariate()

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

اگر نمیدانید توزیع نمایی چیست از این لینک استفاده کنید.

import random
  

test = 1.5
  

print(random.expovariate(test))

خروجی:

2.3429277215218223

()gammavariate

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

اگر نمیدانید توزیع گاما چیست از این لینک استفاده کنید.

import random
  

alpha = 40
beta = 1
  

print(random.gammavariate(alpha, beta))

خروجی:

38.17253757580628

gauss()

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

import random
  

mu = 100
sigma = 50
  

print(random.gauss(mu, sigma))

خروجی:

127.80261974806497

lognormvariate()

برای برگرداندن یک عدد ممیز شناور تصادفی با توزیع log-normal استفاده می شود. مثال:

import random
  
# determining the values of the parameters
mu = 0
sigma = 0.25
  
# using the lognormvariate() method
print(random.lognormvariate(mu, sigma))

خروجی:

0.983094581874461

() normalvariate

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

import random
  

mu = 100
sigma = 50
  

print(random.normalvariate(mu, sigma))

خروجی:

118.15531537233215

vonmisesvariate()

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

import random
  

mu = 0
kappa = 4


print(random.vonmisesvariate(mu, kappa))

خروجی:

6.25529091101777

paretovariate()

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

import random
  

alpha = 3
  

print(random.paretovariate(alpha))

خروجی:

آموزش کتابخانه random

آموزش کتابخانه random


weibullvariate()

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

import random
  

alpha = 1
beta = 1.5
  

print(random.weibullvariate(alpha, beta))

خروجی:

1.3606614893324085

 

جمع بندی نهایی:

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

 

محمدرضا حسنی

224 مطلب منتشر شده

دانش آموخته رشته فناوری اطلاعات / موسس پایتونی ها

درباره این مطلب نظر دهید !

مطالب پرمخاطب پایتونی ها

Keras-or-PyTorch

PyTorch و Keras

5
دقیـقه مطالعه
ادامه ...

محصولات فروش پایتونی ها

%60
تخفیف

آموزش فیگما (Figma)

30,000 تومان
3
%69
تخفیف

آموزش برنامه نویسی پایتون

35,000 تومان
2