Waktu berjalan yang diharapkan dari algoritma acak adalah konsep yang didefinisikan dengan baik, sama seperti waktu berjalan terburuk. Jika suatu algoritma diacak, waktu berjalannya juga acak, yang berarti kita dapat menentukan nilai yang diharapkan dari waktu berjalannya.
Contoh yang terkenal adalah Quicksort: jika kita memilih pivot secara acak, kita dapat membuktikan bahwa waktu berlari yang diharapkan menjadi O (n log n), meskipun waktu terburuknya adalah O (n ^ 2). Contoh di mana pengacakan sangat kuat adalah masalah lingkaran tertutup terkecil: ada algoritma sederhana yang waktu kasus terburuknya adalah O (n ^ 3), tetapi dalam ekspektasi, waktu berjalannya hanya O (n).
Rata-rata waktu berjalan biasanya digunakan ketika berbicara tentang perilaku suatu algoritma 'untuk sebagian besar input'. Kami mendefinisikan beberapa cara menghasilkan input secara acak, misalnya, kami mengisi array dengan angka acak, atau kami secara acak mengubah angka 1 hingga n (jadi tidak ada duplikat), atau kami melempar koin dan mendapatkan set menurun atau naik. angka. Rata-rata waktu berjalan suatu algoritma untuk distribusi input acak tersebut maka waktu berjalan yang diharapkan dari algoritma tersebut (dalam hal ini algoritma tersebut mungkin tidak diacak, tetapi inputnya adalah).
Sebagai contoh: ada masalah geometris yang ada algoritma yang tampaknya bekerja dengan baik pada pandangan pertama, sampai Anda menemukan beberapa cara yang sangat aneh untuk mendistribusikan, katakanlah, jalur input. Jika Anda berasumsi bahwa garis-garis tersebut terdistribusi secara acak, maka mungkin skenario aneh ini sangat tidak mungkin terjadi, sehingga algoritme Anda pada akhirnya menjadi baik.
Kontras: waktu berjalan yang diharapkan adalah tentang bagaimana suatu algoritma berkinerja 'kecuali jika Anda memiliki nasib buruk' - mencoba lagi algoritma yang sama pada input yang sama tetapi dengan pilihan acak yang berbeda dapat menyebabkannya diselesaikan lebih cepat. Waktu berjalan rata-rata berbicara tentang seberapa baik suatu algoritma melakukan 'untuk sebagian besar input' - mencoba algoritma yang sama lagi pada input yang sama tidak akan membantu Anda (kecuali mungkin jika algoritma tersebut juga diacak).