The following line in your code is executed nonce for each call zipf():
sum_prob = sum_prob + c / pow((double) i, alpha);
, pow(), , [, pow(x, alpha) == exp(alpha*log(x))]. alpha , , , pow() . alpha - , , Newton-Raphson, . , , .
, , alpha . , pow((double) i, alpha), zipf() ? , zipf() pow(). , .
. , sumprob() zipf()? sumprob() ?
, . , .
: , , , . . , . , - , Box-Muller, , . . (, , , , . . 1972 " " . , - , , , ?)