Говоря о математическом ожидании, оно довольно бесполезно, но я все равно опубликую его: D
Перемешать просто O (м).
Теперь другой алгоритм немного сложнее. Количество шагов, необходимых для генерации следующего числа, является ожидаемым значением числа испытаний, а вероятность длины испытания является геомтрическим распределением. Итак ...
p=1 E[X1]=1 = 1 = 1
p=1-1/n E[x2]=1/(1-1/n) = 1 + 1/(n-1) = 1 + 1/(n-1)
p=1-2/n E[x3]=1/(1-1/n) = 1 + 2/(n-2) = 1 + 1/(n-2) + 1/(n-2)
p=1-3/n E[X4]=1/(1-2/n) = 1 + 3/(n-3) = 1 + 1/(n-3) + 1/(n-3) + 1(n-3)
....
p=1-(m-1)/n) E[Xm]=1/(1-(m-1)/n))
Обратите внимание, что сумму можно разделить на треугольник, см. Правую часть.
Давайте использовать формулу для гармонического ряда: H_n = Sum k = 0-> n (1 / k) = приблизительно ln (k)
Sum(E[Xk]) = m + ln(n-1)-ln(n-m-1) + ln(n-2)-ln(n-m-1) + ... = m + ln(n-1) + ln(n-2) + ... - (m-1)*ln(n-m-1) ..
И есть какой-то форум для суммы гармонических рядов, если вы все еще заинтересованы, я посмотрю ...
Обновление : на самом деле это довольно хорошая формула (благодаря блестящей книге по бетону по математике)
Sum(H_k) k=0->n = n*H_n - n
Итак, ожидаемое количество шагов:
Sum(E[Xk]) = m + (n-1)*ln(n-1) - (n-1) - (n-m-1)*ln(n-m-1) - (n-m-1)) - (m-1)*ln(n-m-1).
Примечание: я не проверял это.