Kahibaro
Discord Login Register

random

کار با ماژول `random` در پایتون

در این بخش با ماژولی از کتابخانهٔ استاندارد پایتون آشنا می‌شویم که برای تولید «اعداد شبه‌تصادفی» و انجام کارهای تصادفی (مثل انتخاب تصادفی یک آیتم از لیست) استفاده می‌شود: ماژول random.

در فصل والد، با مفهوم «کتابخانه» و «وارد کردن ماژول» آشنا شده‌اید؛ این‌جا فقط روی random تمرکز می‌کنیم.


وارد کردن ماژول `random`

برای استفاده از این ماژول باید آن را وارد (import) کنید:

import random

بعد از این، می‌توانید از توابع داخل آن مثل random.randint() یا random.choice() استفاده کنید.


تولید عدد اعشاری تصادفی بین ۰ و ۱

ساده‌ترین تابع:

import random
x = random.random()
print(x)   # مثلا: 0.3748291012

هر بار که برنامه را اجرا کنید، مقدار متفاوتی خواهید دید.


تولید عدد تصادفی در یک بازهٔ مشخص (صحیح و اعشاری)

۱. عدد صحیح با `randint`

import random
n = random.randint(1, 6)   # شبیه تاس ۶ وجهی
print(n)                   # 1 تا 6

۲. عدد اعشاری در بازه با `uniform`

import random
temperature = random.uniform(20.0, 25.0)
print(temperature)   # مثلا: 22.4819

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

وقتی می‌خواهید از میان چند گزینه یکی را تصادفی انتخاب کنید:

۱. `choice`

import random
colors = ["red", "green", "blue", "yellow"]
chosen_color = random.choice(colors)
print(chosen_color)

مثال با رشته:

import random
letters = "ABCDE"
ch = random.choice(letters)
print(ch)   # یکی از A,B,C,D,E

۲. انتخاب چند آیتم بدون تکرار: `sample`

import random
numbers = [1, 2, 3, 4, 5, 6]
picked = random.sample(numbers, 3)
print(picked)   # مثلا: [4, 1, 6]

k نباید بزرگ‌تر از طول لیست باشد.

۳. انتخاب با امکان تکرار: `choices`

import random
numbers = [1, 2, 3]
picked = random.choices(numbers, k=5)
print(picked)   # مثلا: [2, 2, 1, 3, 2]

درهم‌ریختن ترتیب یک لیست (`shuffle`)

اگر بخواهید ترتیب عناصر یک لیست را به‌طور تصادفی جابه‌جا کنید:

import random
cards = ["A", "K", "Q", "J", "10"]
random.shuffle(cards)
print(cards)   # ترتیب جدید تصادفی

نکته: shuffle فقط روی لیست (شیء قابل تغییر) کار می‌کند، نه روی رشته‌ها.


شبیه‌سازی ساده: پرتاب سکه و تاس

پرتاب سکه

import random
result = random.choice(["شیر", "خط"])
print("نتیجهٔ پرتاب سکه:", result)

پرتاب دو تاس و جمع آن‌ها

import random
die1 = random.randint(1, 6)
die2 = random.randint(1, 6)
total = die1 + die2
print("تاس اول:", die1)
print("تاس دوم:", die2)
print("جمع:", total)

چنین الگوهایی در بازی‌ها، شبیه‌سازی‌ها و تمرین‌ها بسیار کاربردی‌اند.


تولید رمز عبور ساده با `random`

ترکیب choice با رشته‌ای از حروف/اعداد:

import random
import string  # از کتابخانهٔ استاندارد، برای حروف و اعداد
chars = string.ascii_letters + string.digits   # a-z, A-Z, 0-9
length = 8
password = ""
for _ in range(length):
    password += random.choice(chars)
print("رمز عبور تصادفی:", password)

(در بخش‌های دیگر دوره، پروژهٔ مجزا برای تولید رمز عبور خواهید داشت؛ این‌جا صرفا ایدهٔ استفاده از random را می‌بینید.)


`random.seed()` و تکرارپذیری

ماژول random اعداد «شبه‌تصادفی» تولید می‌کند. یعنی اگر «بذر» (seed) اولیه را ثابت بگذارید، توالی اعداد تولیدشده هم همیشه ثابت می‌ماند. این برای تست و اشکال‌زدایی مفید است.

مثال:

import random
random.seed(42)   # عدد دلخواه
print(random.randint(1, 10))
print(random.randint(1, 10))
print(random.random())

اگر این کد را چند بار اجرا کنید، هر بار دقیقا همین سه مقدار را می‌گیرید.
اما اگر seed را حذف کنید، هر اجرا نتایج متفاوتی دارد.

نکته: برای استفاده‌های عادی (مثلا بازی)، معمولا نیازی به seed ندارید. برای بازتولید نتایج یک شبیه‌سازی، seed بسیار مفید است.


جمع‌بندی کاربردهای رایج `random`

چیزهایی که برای یک مبتدی بیشترین کاربرد را دارند:

در تمرین‌ها و پروژه‌های بعدی، مثل «بازی حدس عدد» و «تولیدکنندهٔ رمز عبور»، به طور عملی از این توابع استفاده خواهید کرد.

Views: 6

Comments

Please login to add a comment.

Don't have an account? Register now!