เวลาทำงานที่คาดหวังของอัลกอริทึมแบบสุ่มเป็นแนวคิดที่ดีเช่นเดียวกับเวลาทำงานที่เลวร้ายที่สุด หากอัลกอริทึมถูกสุ่มเวลาทำงานก็จะสุ่มซึ่งหมายความว่าเราสามารถกำหนดค่าที่คาดหวังของเวลาทำงาน
ตัวอย่างที่รู้จักกันดีคือ Quicksort: ถ้าเราเลือก pivots โดยการสุ่มเราสามารถพิสูจน์ได้ว่าเวลาทำงานที่คาดว่าจะกลายเป็น O (n log n) แม้ว่าเวลาที่เลวร้ายที่สุดของการรันยังคงเป็น O (n ^ 2) ตัวอย่างที่การสุ่มมีประสิทธิภาพมากคือปัญหาวงกลมล้อมรอบที่เล็กที่สุด: มีอัลกอริทึมแบบง่ายซึ่งเวลาทำงานที่แย่ที่สุดคือ O (n ^ 3) แต่ในความคาดหมายเวลาทำงานของมันคือ O (n) เท่านั้น
เวลาทำงานโดยเฉลี่ยมักใช้เมื่อพูดถึงพฤติกรรมของอัลกอริทึม 'สำหรับอินพุตส่วนใหญ่' เรากำหนดวิธีการสร้างอินพุตแบบสุ่มบางตัวอย่างเช่นเราเติมอาร์เรย์ด้วยตัวเลขสุ่มหรือเราสุ่มเรียงตัวเลข 1 ถึง n (ดังนั้นจึงไม่มีการซ้ำซ้อน) หรือเราพลิกเหรียญและได้ชุดจากมากไปหาน้อยหรือจากน้อยไปมาก หมายเลข เวลาทำงานเฉลี่ยของอัลกอริทึมสำหรับการแจกแจงแบบสุ่มของอินพุตนั้นเป็นเวลาทำงานที่คาดหวังของอัลกอริทึม (ซึ่งในกรณีนี้อัลกอริทึมอาจไม่ได้ถูกสุ่ม แต่เป็นอินพุท)
เป็นตัวอย่าง: มีปัญหาทางเรขาคณิตที่อัลกอริธึมมีอยู่ซึ่งดูเหมือนว่าจะทำงานได้ดีตั้งแต่แรกจนกระทั่งคุณค้นพบวิธีการกระจายแบบแปลก ๆ บางอย่างพูดบรรทัดอินพุต หากคุณสมมติว่ามีการกระจายบรรทัดแบบสุ่มอาจเป็นไปได้ว่าสถานการณ์แปลก ๆ เหล่านี้ไม่น่าจะเกิดขึ้นได้ดังนั้นอัลกอริทึมของคุณจึงกลายเป็นสิ่งที่ดี
การตัดกัน: เวลาทำงานที่คาดหวังเป็นเรื่องเกี่ยวกับประสิทธิภาพของอัลกอริธึม 'ถ้าคุณโชคไม่ดี "- ลองใช้อัลกอริทึมเดิมอีกครั้งในอินพุตเดียวกัน แต่ด้วยตัวเลือกแบบสุ่มที่แตกต่างกัน เวลาทำงานเฉลี่ยพูดคุยเกี่ยวกับประสิทธิภาพของอัลกอริธึม 'สำหรับอินพุตส่วนใหญ่' - การลองอัลกอริทึมเดียวกันอีกครั้งในอินพุตเดียวกันจะไม่ช่วยคุณได้ (ยกเว้นบางทีหากอัลกอริทึมนั้นถูกสุ่มด้วย)