Python:
גילוי מספרים אקראיים
איך לעשות:
פייתון מספקת את המודול random
שעוזר ביצירת מספרים אקראיים לשימושים שונים. הנה איך להתחיל:
ייבוא המודול
import random
יצירת מספר שלם אקראי בין שני מספרים כלשהם.
random_integer = random.randint(1, 10) print(random_integer)
פלט לדוגמא:
7
יצירת מספר ממשי בין 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
בחירת אלמנט אקראי מתוך רשימה
greetings = ['Hello', 'Hi', 'Hey', 'Hola', 'Bonjour'] print(random.choice(greetings))
פלט לדוגמא:
Hola
ערבוב רשימה מושלם למשחקי קלפים או כל אפליקציה שמצריכה ערבוב של הסדר.
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
למשימות הקשורות לקריפטוגרפיה. התפתחות זו משקפת את הגדלת החשיבות של האבטחה בפיתוח תוכנה ואת הצורך באקראיות חזקה יותר באפליקציות החל מהצפנה ועד יצירת טוקנים בטוחים.