כל מחולל אקראי חייב לעבור בדיקות סטטיסטיות לפני שאפשר יהיה לבטוח באיכות הפלט שלו. מחוללים פיזיים רגישים להשפעות חיצוניות כמו טמפרטורה, הספקת חשמל, התיישנות או השפעות אחרות ועלולים לסבול מכשל אטי ומתמשך שאינו מורגש לעין, או מירידה חדה באיכותם. לעיתים שגיאות או תקלות ברמת חומרה קשות לאיתור. באותה מידה, מחוללים חישוביים פסידו אקראיים עשויים גם הם לסבול מכשל לוגי כלשהו. ישנן שיטות מתמטיות להערכת אנטרופיה של פלט אקראי, הן יעילות אך ורק כדי להצביע על מאפיינים המעידים על מידת אי-הצפיות, אך לא כדי לקבוע האם רצף הוא אקראי אמיתי או לא. גם בהינתן מקור אקראי הטוב ביותר האפשרי, אין זה קל להבטיח שאקראיות המספרים המופקים מהמחולל אינה מוטה (unbiased) לחלוטין לצד כלשהו.
הבעיה לקבוע האם מספר אקראי שיוצר באמצעות המחולל, הוא אקראי "אמיתי" היא בעיה מאוד קשה. גם אם יעבור בהצלחה מבחנים סטטיסטיים אין זה מוכיח שהרצף באמת אקראי. לצורך המחשה נתון הרצף האקראי הבא (40 סיביות):
אם נכפיל אותו 4 פעמים ונשרשר אותם למחרוזת אחת באורך 160 סיביות, כמובן שהתוצאה לא תהיה אקראית כלל. למרות זאת נראה שהמחרוזת האמורה תעבור בהצלחה מספר מבחנים סטטיסטיים. אם כי המחרוזת לא תעבור בדיקת אוטו-קורלציה, אפשר לראות כי המבחנים הסטטיסטיים אינם מספקים הוכחה וודאית לאקראיות.
הלבנה (whitening).
כמעט כל רצף אקראי גולמי שנוצר אם באמצעים פיזיים או באמצעים חישוביים, סובל מהטיה סטטיסטית וקורלציה. ישנן כמה דרכים לתיקון ההטיה מה שקרוי "הלבנה" בשל הזיקה לרעש לבן. אפשר לתקן הטיות בחומרה בשלב ייצור המספרים, באמצעים טכניים או אלקטרוניים ואפשר לעשות זאת בשיטות חישוביות.
ג'ון פון ניומן המציא שיטה פשוטה ויעילה הנקראת "דה-קורלציה" להסרת הטיה אם קיימת מרצף אקראי כדלהלן: בכל שלב מטפלים בשתי סיביות קלט, אם התקבלו שתי סיביות זהות מדלגים עליהן (מסירים אותן מהרצף), אם התקבל הזוג "01" מוחקים את האפס ומתקבל "1" ואם מתקבל הזוג "10" משנים ל-"0". השפעת טכניקה זו על הקלט היא שללא תלות במקורו, במחיר של איבוד כמה סיביות, הקלט מתקרב להתפלגות סטטיסטית של חמישים אחוז. השיטה פשוטה וקלה ליישום בחומרה או במחשב.
שיטה אחרת לתקן הטיה של רצף אקראי ולצמצם קורלציה היא לשלבו עם רצף אקראי אחר באיכות גבוהה, כמו חישוב XOR של הרצף האמור עם רצף פסידו אקראי קריפטוגרפי. התוצאה תהיה באיכות שאינה עולה על איכות הרצף הטוב מבין השניים.
דרך אחרת היא לשלב שני רצפים בעלי 'אקראיות חלשה' באמצעות XOR ולייצר מהם רצף אקראי באיכות גבוהה יותר. אם ההסתברות של סיבית אפס בשני הרצפים היא formula_6 כאשר formula_7 אזי formula_8 הוא ההטיה של הרצף. אם מחברים ב-XOR את שני הרצפים יחד מתקבל רצף בעל הטיה ל-formula_9. אם חוזרים על הפעולה מספר פעמים עם רצפים אחרים מצמצמים את e יותר. עובדה זו נובעת מהתכונה של האופרטור XOR ולֶמת ההצטברות.
המחוללים הקריפטוגרפיים משתמשים בפונקציית גיבוב קריפטוגרפית כמו SHA או MD5 כדי לתקן הטיה וקורלציה. אפשר לנצל גם פונקציית תיקון שגיאות (CRC) או אלגוריתם הצפנה. טכניקה זו אטרקטיבית מכמה סיבות, ראשית היא מהירה וקלה ליישום, שנית בתכנון מחולל קריפטוגרפי, משתדלים להסתמך על פרימיטיבים קריפטוגרפיים הקיימים במערכת ממילא, בכך חוסכים משאבים וזמן. איכות הפלט במקרה כזה תלויה לגמרי באיכות פונקציית הגיבוב או ההצפנה. שגם לאחר השימוש בהן תיתכן עדיין תאורטית הטיה קלה.
מבחנים סטטיסטיים.
קיים מגוון גדול של מבחנים סטטיסטיים לבדיקת איכות מחולל אקראי. המבחנים לא נועדו להוכיח מתמטית שהרצף שהמחולל מייצר אקראי, אלא לאתר נקודות תורפה במחולל שעשויות להעיד על אקראיות לקויה. הבדיקות נעשות על דגימה של הפלט בסיביות. כל מבחן סטטיסטי קובע האם הרצף הנדון מכיל מאפיינים מסוימים שנצפו מראש ברצף אקראי אמיתי. תוצאת מבחן או ניסוי כזה אינה דטרמיניסטית אלא הסתברותית. למשל רצף אקראי אמיתי אמור להכיל סיביות אפס ואחד במספר שווה בקירוב. אם הרצף הנדון אינו עונה על דרישה זו אפשר לומר שהמחולל שייצר את הרצף נכשל בניסוי. לעומת זאת אם מספר הסיביות אחד ואפס שווה בשיעור סטייה מסוים שנקבע מראש, אפשר לומר שהרצף האקראי "התקבל". במונח התקבל מתכוונים שאין דוחים את טענת אקראיותו. גם אם הרצף עובר בהצלחה מבחן סטטיסטי נתון, אין הדבר מהווה הוכחה מוחלטת לאקראיותו אלא יותר מעין אישוש הסתברותי.
רוב המבחנים הסטטיסטיים מבוססים על התפלגות נורמלית והתפלגות כי בריבוע (formula_10). התפלגות נורמלית היא סכום מספר גדול של משתנים מקריים בלתי תלויים בעלי תוחלת ושונות זהים. משתנה מקרי formula_11 הוא בעל התפלגות נורמלית אם פונקציית הצפיפות שלו היא מהצורה:
מסמנים זאת formula_13. במקרה ש-formula_14 מתקבלת התפלגות נורמלית "סטנדרטית" מהצורה:
הנקראת גם "עקומת הפעמון" בשל העובדה שגרף הפונקציה סימטרי ביחס לציר ה-formula_16 בכך מתקבלת צורת פעמון. המעבר מהתפלגות נורמלית של formula_13 להתפלגות נורמלית סטנדרטית הוא formula_18.
התפלגות formula_10 עם formula_20 דרגות חופש מתרחשת כאשר סוכמים ריבועי formula_20 משתנים מקריים בלתי תלויים בעלי התפלגות נורמלית סטנדרטית. ניתן להשתמש בהתפלגות formula_10 כדי לייצג את מידת ההתאמה בין תדירות אירועים שנצפו לבין התדירות המשוערת תחת הנחה (היפותזה) הסתברותית כלשהי. פונקציית הצפיפות של התפלגות כי בריבוע היא מהצורה:
אם formula_11 הוא משתנה מקרי בעל התפלגות formula_10 עם formula_20 דרגות חופש, אזי formula_31. במילים אחרות formula_32 מייצג את ההסתברות ש-formula_11 יחרוג מהערך הצפוי בנקודה formula_24. קיימות טבלאות מוכנות של ערכי התפלגות כי בריבוע, שאפשר להשתמש בהן כמקור להשוואה. במקרה של התפלגות נורמלית סטנדרטית כאשר formula_14 אומרים שהמשתנה formula_36 הוא בעל התפלגות כי בריבוע עם דרגת חופש אחת.
ניסוי סטטיסטי הוא תהליך שבהתבסס על ערכים שנצפו במשתנה מקרי אחד או יותר, מאשש היפותזה סטטיסטית הנקראת השערת האפס (אותה מסמנים formula_37) המייצגת טענה בנוגע להתפלגות המשתנה או המשתנים בהתאם לרמת מובהקות formula_32. רמת המובהקות מייצגת את ההסתברות שהשערת האפס תתקבל או תדחה (גם בניגוד לנכונותה). מצב שבו השערת האפס נדחית למרות היותה נכונה (כאשר ערך formula_32 גבוה מדי) נקרא "טעות מסוג I". לעומתה, טעות מסוג II עלולה להתרחש כאשר רמת המובהקות נמוכה מדי, אז קיימת סכנה שהשערה תתקבל למרות היותה שגויה, דהיינו במקרה זה הרצף ייחשב כאקראי אף על פי שאינו כזה.
את הניסוי עורכים עם "נתון" סטטיסטי שהוא פונקציה של אלמנטים מהדגימה (כגון מספר האפסים או האחדים בדגימה). הנתון צריך להתאים להתפלגות הנורמלית או כי בריבוע של רצף אקראי אמיתי. את ערכי הנתון משווים עם ערכים ידועים מראש. לדוגמה אם formula_11 מתאים להתפלגות כי בריבוע עם formula_20 דרגות חופש וידוע שהנתון הסטטיסטי לצורך הניסוי אמור לקבל ערכים גבוהים יותר במקרה של אקראיות לקויה, קובעים ערך "סף" formula_42 לפי נתון ידוע מראש (בדרך כלל בעקבות ניסויים בערכים אקראיים אמיתיים) ומחשבים את formula_43, אם תוצאת הניסוי הנתון נמוכה מערך זה הרי שהרצף נכשל בבדיקה. בדרך דומה מחשבים את ערכי formula_32 עבור כל ניסוי ספציפי ובודקים אם תוצאת הניסוי נמוכה מערך זה. אם בכל המקרים התוצאה גבוהה, אפשר לקבל את הרצף כאקראי. כמובן שיש להביא בחשבון אחוז נמוך של תוצאות, אפילו במקרה של רצף אקראי אמיתי שעלולות להיות נמוכות מערכי הסף שנקבעו, מה שמעיד כביכול על אקראיות לקויה. קביעת ערכי סף היא משימה קשה, ערכי סף בדרך כלל נקבעים אמפירית.
להלן מפורטים שישה מבחנים סטטיסטיים בסיסיים (המובאים בספר Handbook of Applied Cryptography).
במבחנים המתוארים formula_45 הוא סדרה של סיביות באורך formula_46. כאשר formula_46 צריך להיות גדול, בין formula_48 ל-formula_49 (מיליון סיביות). רמת המובהקות נקבעה כאן formula_50 (ערכים אחרים אפשריים אך דורשים התאמות בערכי הסף). דוגמה לטבלת ערכים באחוזים של התפלגות נורמלית כצפוי מהתנהגות משתנים אקראיים:
למשל בכניסה formula_50 והערך formula_52, משמעות הדבר שאם formula_11 בעל התפלגות נורמלית סטנדרטית אזי formula_11 חורג מהערך formula_55 בנקודה זו בחמישה אחוז מהמקרים בקירוב.
מבחן תדירות (monobit test).
בדיקה דו-כיוונית שמטרתה לוודא שמספר מופעי סיביות '1' ו-'0' זהה בקירוב, כצפוי מרצף אקראי. אם formula_56 ו-formula_57 מייצגים את סיביות '0' ו-'1' בהתאמה אזי הנוסחה היא:
מבחן סריאלי (two bit test).
מטרת הבדיקה לקבוע האם מספר הזוגות 00, 01, 10, 11 המופיעים ברצף זהה בקירוב כצפוי מרצף אקראי. אם formula_59, formula_60, formula_61, formula_62 מייצגים את הזוגות האמורים בהתאמה, אזי הנוסחה היא:
מבחן פוקר (poker test).
מחלקים את הרצף formula_64 ל-formula_65 חלקים כל אחד בגודל formula_66 סיביות כאשר formula_2 מקיים formula_68 והערך formula_69 מייצג את מספר המופעים של החלק ה-formula_70. מבחן פוקר בודק האם מספר כל המופעים ברצף זהה בקירוב למספר הצפוי מרצף אקראי באמצעות הנוסחה:
מבחן פוקר הוא הכללה של מבחן תדירות רק שכאן בודקים תדירות מופעים של תת-רצפים הגדולים מ-1.
מבחן ריצות (runs test).