גילוי מספרים אקראיים

Python:
גילוי מספרים אקראיים

איך לעשות:

פייתון מספקת את המודול random שעוזר ביצירת מספרים אקראיים לשימושים שונים. הנה איך להתחיל:

  1. ייבוא המודול

    import random
  2. יצירת מספר שלם אקראי בין שני מספרים כלשהם.

    random_integer = random.randint(1, 10)
    print(random_integer)

    פלט לדוגמא: 7

  3. יצירת מספר ממשי בין 0 ל-1.

    random_float = random.random()
    print(random_float)

    פלט לדוגמא: 0.436432634653

    אם צריך מספר ממשי בטווח אחר, להכפיל:

    random_float_range = random.random() * 5  # מ-0 עד 5
    print(random_float_range)

    פלט לדוגמא: 3.182093745

  4. בחירת אלמנט אקראי מתוך רשימה

    greetings = ['Hello', 'Hi', 'Hey', 'Hola', 'Bonjour']
    print(random.choice(greetings))

    פלט לדוגמא: Hola

  5. ערבוב רשימה מושלם למשחקי קלפים או כל אפליקציה שמצריכה ערבוב של הסדר.

    numbers = list(range(10))
    random.shuffle(numbers)
    print(numbers)

    פלט לדוגמא: [2, 5, 0, 4, 9, 8, 1, 7, 6, 3]

לעומק

המודול random בפייתון משתמש במחולל מספרים פסאודו-אקראיים (PRNG), בפרט אלגוריתם Mersenne Twister, שמתאים לשימושים כלליים אך לא מתאים למטרות קריפטוגרפיות עקב הניתנות שלו לחיזוי אם מתבוננים במספיק פלטים. המודול secrets, שהוצג בפייתון 3.6, מציע חלופה טובה יותר ליצירת מספרים אקראיים חזקים מבחינה קריפטוגרפית, שימושי במיוחד באפליקציות רגישות לאבטחה. לדוגמה, יצירת טוקן אקראי ובטוח לקישור איפוס סיסמה:

import secrets
token = secrets.token_hex(16)
print(token)

בהיסטוריה, יצירת מספרים אקראיים שהם באמת אקראיים הייתה אתגר במחשוב, עם שיטות מוקדמות המתבססות על תופעות פיזיות או הזנות ידנית של זרעים. הפיתוח והאימוץ של אלגוריתמים כמו Mersenne Twister (שנמצא בשימוש כברירת מחדל במודול random של פייתון לפחות עד לעדכון הידע האחרון שלי ב-2023) סימן התקדמות נכבדת. עם זאת, החיפוש המתמשך אחר אלגוריתמים יותר בטוחים ויעילים הביא לכלול את המודול secrets למשימות הקשורות לקריפטוגרפיה. התפתחות זו משקפת את הגדלת החשיבות של האבטחה בפיתוח תוכנה ואת הצורך באקראיות חזקה יותר באפליקציות החל מהצפנה ועד יצירת טוקנים בטוחים.