Fastest method of randomly swapping array indexes / generating random alphabets in C++
This method is biased. Use Fisher-Yates shuffle.
TL;DR: There are \$26^{26}\$ possible outcomes of a. There are \$26!\$ possible permutations of the alphabet. Since \$26!\$ doesn't evenly divide \$26^{26}\$, permutations are not equiprobable.

Regarding speed, I don't think that generating a beforehand is beneficial. It results in 3 memory fetches down the line: alpha[x], tmp = a[x], alpha[tmp]. Generating a random number inside the loop makes only two fetches. It is likely to not be measurable with an alphabet as short as 26 characters, but when shuffling a billion-strong alphabet you'd see the difference.