random — יצירת מספרים אקראיים

מודול זה מממש מחולל מספרים פסאודו-אקראיים (PRNG). ה-PRNG הוא LCG בסגנון Yasmarang ברוחב 32 ביט; ביבוא הראשון הוא שואב seed אחד ברוחב 32 ביט מאותו מקור חומרה שבו משתמשת os.urandom(), וכל מספר עוקב הוא פונקציה דטרמיניסטית של אותו seed.

אזהרה

הפלט אינו מאובטח קריפטוגרפית – האלגוריתם ניתן לחיזוי מתוך רצף פלט קצר, וה-seed ההתחלתי נושא רק 32 ביט של אנטרופיה. עבור חומר מפתחות, אסימוני הפעלה, מלחי סיסמאות, או כל שימוש רגיש-אבטחה אחר, קראו ל-os.urandom() במקום זאת.

הערה

הסימון הבא משמש עבור מרווחים:

  • () הם סוגריים של מרווח פתוח ואינם כוללים את נקודות הקצה שלהם. לדוגמה, (0, 1) משמעו גדול מ-0 וקטן מ-1. בסימון קבוצות: (0, 1) = {x | 0 < x < 1}.

  • [] הם סוגריים של מרווח סגור הכוללים את כל נקודות הגבול שלהם. לדוגמה, [0, 1] משמעו גדול או שווה ל-0 וקטן או שווה ל-1. בסימון קבוצות: [0, 1] = {x | 0 <= x <= 1}.

פונקציות עבור מספרים שלמים

random.getrandbits(n: int) int

מחזירה מספר שלם עם n ביטים אקראיים (0 <= n <= 32).

random.randint(a: int, b: int) int

מחזירה מספר שלם אקראי בטווח [a, b].

random.randrange(start: int, stop: int | None = None, step: int = 1) int

הצורה הראשונה מחזירה מספר שלם אקראי מהטווח [0, stop). הצורה השנייה מחזירה מספר שלם אקראי מהטווח [start, stop). הצורה השלישית מחזירה מספר שלם אקראי מהטווח [start, stop) בצעדים של step. לדוגמה, קריאה ל-randrange(1, 10, 2) תחזיר מספרים אי-זוגיים בין 1 ל-9 כולל.

פונקציות עבור מספרים ממשיים

random.random() float

מחזירה מספר נקודה צפה אקראי בטווח [0.0, 1.0).

random.uniform(a: float, b: float) float

מחזירה מספר נקודה צפה אקראי N כך ש-a <= N <= b עבור a <= b, ו-b <= N <= a עבור b < a.

פונקציות אחרות

random.seed(n: int | None = None, /) None

מאתחלת את מודול מחולל המספרים האקראיים עם ה-seed n, שצריך להיות מספר שלם. כאשר לא מועבר ארגומנט (או None), ה-PRNG מקבל seed מחדש מאותו מקור ייחודי-לפורט שבו משתמשת os.urandom().

random.choice(sequence: Any) Any

בוחרת ומחזירה פריט אחד באקראי מתוך sequence (tuple, רשימה או כל אובייקט התומך בפעולת התחתית).