No, random(i). that is because sattolo's last swap is swap(i) with swap(i+1)...
Or when applied in reverse, of course the reverse.
Otherwise the algorithm becomes Knuth's - which is Fisher-Yates - version and not all members always change position: it then becomes possibe that a member is in the same position from the start of the shuffle.
That was also the major mistake that the one who editted my first version on Rosetta code made. It is a common error. You have to understand that the upper i is not inclusive.
If it were inclusive we needed to iterate for
i-1....
A good explanation is here:
https://danluu.com/sattolo/Were you the vandal that tried to mutilate my first version?

My implementation is absolutely correct.