اعداد تصادفی را می توان با استفاده از توابع تصادفی()، uniform()، randange() و randint() در ماژول تصادفی کتابخانه استاندارد پایتون تولید کرد.
ماژول تصادفی در کتابخانه استاندارد گنجانده شده است، بنابراین نیازی به نصب اضافی نیست. البته باید آن را وارد کنید.
اطلاعات زیر در اینجا ارائه شده است.
random.random()
(عدد ممیز شناور بین 0.0 و 1.0)random.uniform()
(هر محدوده ای از اعداد ممیز شناور)- اعداد تصادفی را ایجاد کنید که از توزیع نرمال، توزیع گاوسی و غیره پیروی می کنند.
random.randrange()
(عدد صحیح محدوده و گام دلخواه)random.randint()
(یک عدد صحیح در هر محدوده)- ایجاد یک لیست با اعداد تصادفی به عنوان عناصر
- فهرست اعداد ممیز شناور تصادفی
- لیست اعداد تصادفی اعداد صحیح
- مولد اعداد تصادفی را راه اندازی کنید (تعیین دانه اعداد تصادفی)
مقاله زیر را در مورد نحوه استخراج یا مرتبسازی تصادفی عناصر یک لیست ببینید.
- random.random()(عدد ممیز شناور بین 0.0 و 1.0)
- random.uniform()(هر محدوده ای از اعداد ممیز شناور)
- اعداد تصادفی را ایجاد کنید که از توزیع نرمال، توزیع گاوسی و غیره پیروی می کنند.
- random.randrange()(عدد صحیح محدوده و گام دلخواه)
- random.randint()(یک عدد صحیح در هر محدوده)
- ایجاد یک لیست با اعداد تصادفی به عنوان عناصر
- مولد اعداد تصادفی را راه اندازی کنید (تعیین دانه اعداد تصادفی)
random.random()(عدد ممیز شناور بین 0.0 و 1.0)
تابع random ماژول تصادفی یک عدد ممیز شناور تصادفی از نوع float ایجاد می کند که بین 0.0 و 1.0 است.
import random
print(random.random())
# 0.4496839011176701
random.uniform()(هر محدوده ای از اعداد ممیز شناور)
uniform(a, b)
توابع این ماژول تصادفی اعداد تصادفی از نوع شناور اعداد ممیز شناور را در هر یک از محدوده های زیر تولید می کند.
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
این دو آرگومان می توانند بزرگتر یا کوچکتر باشند. اگر برابر باشند، طبیعتاً فقط آن مقدار را برمیگردانند. مقدار بازگشتی همیشه یک شناور است.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
آرگومان را می توان به صورت شناور نیز مشخص کرد.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
اینکه آیا مقدار b در محدوده گنجانده شده است به گرد کردن زیر بستگی دارد، همانطور که مستند شده است.a + (b-a) * random.random()
اینکه آیا مقدار نقطه پایانی b در محدوده قرار دارد یا خیر، به گرد کردن ممیز شناور در معادله زیر بستگی دارد.
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
اعداد تصادفی را ایجاد کنید که از توزیع نرمال، توزیع گاوسی و غیره پیروی می کنند.
توابع تصادفی() و uniform() در بالا اعداد تصادفی توزیع شده یکنواخت را تولید می کنند، اما توابعی برای تولید اعداد ممیز شناور نیز وجود دارد که از توزیع زیر پیروی می کنند.
- توزیع بتا:
random.betavariate()
- توزیع نمایی:
random.expovariate()
- توزیع گاما:
random.gammavariate()
- توزیع گاوسی:
random.gauss()
- توزیع لگ نرمال:
random.lognormvariate()
- توزیع نرمال:
random.normalvariate()
- توزیع فون میزس:
random.vonmisesvariate()
- توزیع پارتو:
random.paretovariate()
- توزیع وایبول:
random.weibullvariate()
پارامترهای هر توزیع با آرگومان ها مشخص می شوند. برای جزئیات بیشتر به اسناد رسمی مراجعه کنید.
random.randrange()(عدد صحیح محدوده و گام دلخواه)
randrange(start, stop, step)
عملکرد این ماژول تصادفی یک عنصر انتخاب شده تصادفی از عناصر زیر را برمی گرداند.range(start, stop, step)
همانند range()، آرگومان های start و step را می توان حذف کرد. اگر حذف شدند، start=0 و step=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
مرحله آرگومان را می توان طوری تنظیم کرد که یک عدد صحیح تصادفی زوج یا فرد یا یک عدد صحیح تصادفی مضرب سه باشد.
به عنوان مثال، اگر شروع زوج و step=2 باشد، تنها اعداد زوج صحیح در محدوده را می توان به طور تصادفی به دست آورد.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint()(یک عدد صحیح در هر محدوده)
randint(a, b)
تابع این ماژول تصادفی عدد صحیح تصادفی زیر را برمی گرداند.a <= n <= b
randrange(a, b + 1)
معادل این ؛ توجه داشته باشید که مقدار b نیز در محدوده گنجانده شده است.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
ایجاد یک لیست با اعداد تصادفی به عنوان عناصر
در این بخش نحوه استفاده از ماژول تصادفی کتابخانه استاندارد برای تولید لیستی با اعداد تصادفی به عنوان عناصر را توضیح خواهیم داد.
فهرست اعداد تصادفی با شناورهای ممیز شناور
برای ایجاد لیستی که عناصر آن اعداد تصادفی ممیز شناور هستند، توابع تصادفی() و uniform() را با نماد درک لیست ترکیب کنید.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
در مثال بالا از range() استفاده شده است، اما لیست ها و تاپل ها نیز برای تعداد دلخواه عنصر امکان پذیر است. برای جزئیات بیشتر در مورد درک لیست، لطفاً به مقاله زیر مراجعه کنید.
- مقالات مرتبط:استفاده از نماد درک لیست پایتون
لیست اعداد تصادفی عدد صحیح
هنگام تولید لیستی که عناصر آن اعداد تصادفی صحیح هستند، ترکیب ()randange و randint() بالا با نماد درک لیست ممکن است مقادیر تکراری را به همراه داشته باشد.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
اگر می خواهید یک دنباله تصادفی از اعداد صحیح بدون تکرار بسازید، عناصر range() را با یک محدوده دلخواه با استفاده از random.sample() استخراج کنید.
print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]
print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]
برای اطلاعات بیشتر در مورد random.sample()، لطفاً به مقاله زیر مراجعه کنید.
مولد اعداد تصادفی را راه اندازی کنید (تعیین دانه اعداد تصادفی)
با دادن یک عدد صحیح دلخواه به تابع seed() ماژول تصادفی، می توان seed اعداد تصادفی را ثابت کرد و مولد اعداد تصادفی را می توان مقدار دهی اولیه کرد.
پس از مقداردهی اولیه با همان seed، مقدار تصادفی همیشه به همان روش تولید می شود.
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025