מחולל מספרים אקראיים
אפשרויות
פלט
פרטים טכניים
כיצד פועל מחולל המספרים האקראיים
מה הכלי עושה
מחולל המספרים האקראיים מפיק מספרים שלמים אקראיים חזקים קריפטוגרפית או מספרים בנקודה צפה באמצעות Web Crypto API (crypto.getRandomValues). הוא משתמש בדגימת דחייה כדי לבטל הטיית מודולו, וכך מבטיח התפלגות אחידה בכל טווח שנבחר. ניתן לייצר ערכים בודדים או אצוות של מספרים אקראיים עם הגדרות מינימום, מקסימום ודיוק הניתנות להגדרה.
מקרי שימוש נפוצים למפתחים
מפתחים משתמשים במחוללי מספרים אקראיים קריפטוגרפיים למשימות רגישות לאבטחה כגון יצירת אסימוני סשן שאינם ניתנים לניחוש, nonces, בחירות לוטו או דגימה אקראית ממאגרי נתונים. מפתחי משחקים משתמשים בכך להטלות קובייה וליצירה פרוצדורלית כאשר הוגנות חשובה. מהנדסי QA מייצרים קלטי בדיקה אקראיים ל-fuzz testing, ומדעני נתונים משתמשים בכך לדגימה אקראית כאשר אין צורך בשחזוריות.
פורמטי נתונים, טיפוסים או וריאנטים
הכלי תומך ביצירת מספרים שלמים בתוך טווח שרירותי (גבולות כוללים) וביצירת מספרים בנקודה צפה עם דיוק עשרוני הניתן להגדרה. דגימת דחייה משליכה ערכים שעלולים לגרום להטיית מודולו כאשר הטווח אינו מחלק באופן שווה את מרחב הפלט של מקור האקראיות. האנטרופיה הבסיסית מגיעה מ-CSPRNG של מערכת ההפעלה (CryptGenRandom ב-Windows, /dev/urandom ב-Unix) ונחשפת דרך Web Crypto API של הדפדפן.
מלכודות נפוצות ומקרי קצה
אקראיות קריפטוגרפית איטית יותר מ-Math.random() ואינה נחוצה לשימושים שאינם קשורים לאבטחה כמו ערבוב פלייליסט. דגימת דחייה יכולה תאורטית להיכנס ללולאה פעמים רבות עבור טווחים פתולוגיים, אם כי בפועל זה זניח. מספרים אקראיים שנוצרים בדפדפן אינם ניתנים לזריעה לצורך שחזוריות — אם אתם צריכים רצפים דטרמיניסטיים לבדיקות, השתמשו במקום זאת ב-PRNG עם seed. טווח המספרים השלמים הבטוח המקסימלי מוגבל על ידי Number.MAX_SAFE_INTEGER של JavaScript (2^53 - 1).
מתי להשתמש בכלי הזה לעומת קוד
השתמשו בכלי הדפדפן כאשר אתם צריכים מספר אקראי מהיר וללא הטיה עבור החלטה חד-פעמית, בדיקה ידנית, או אימות שהמימוש שלכם מפיק ערכים בתוך טווחים צפויים. לשימוש בסביבת ייצור, קראו ל-crypto.getRandomValues() ישירות בקוד שלכם או השתמשו בפונקציות CSPRNG מובנות בשפה (מודול secrets ב-Python, SecureRandom ב-Java) שמשתלבות עם טיפול השגיאות והרישום (logging) של היישום שלכם.