Skip to content

Instantly share code, notes, and snippets.

@mischief
Created February 7, 2017 01:03
Show Gist options
  • Select an option

  • Save mischief/647c0a9c6d86b2aa43b2bb9dc7197ac0 to your computer and use it in GitHub Desktop.

Select an option

Save mischief/647c0a9c6d86b2aa43b2bb9dc7197ac0 to your computer and use it in GitHub Desktop.
/* fisher-yates shuffle */
void
shuffle(void *base, long nel, long width)
{
unsigned char *b, *swap1, *swap2;
long i, j, k;
b = base;
for(i = nel - 1; i > 0; i--){
j = nrand(i);
swap1 = &b[i*width];
swap2 = &b[j*width];
for(k = 0; k < width; k++){
*swap1 ^= *swap2;
*swap2 ^= *swap1;
*swap1++ ^= *swap2++;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment