تولید اعداد اعشاری تصادفی و اعداد صحیح در پایتون، از جمله تصادفی()، randrange() و randint()

کسب و کار

اعداد تصادفی را می توان با استفاده از توابع تصادفی()، uniform()، randange() و 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
Copied title and URL