I have created a function that is supposed to shuffle the values in an array, I am having issues though - it doesn't seem to shuffle very well and I'm looking for some insight about how to go about it better.

By not shuffling very well, I mean that I will frequently get the same result twice in a row.Code:`void shuffle(int* a, int size){`

srand((unsigned)time(0));

for (int i = 0; i < (size-1); ++i) {

int r = i + (rand() % (size-i)); // Random remaining position.

int temp = a[i]; a[i] = a[r]; a[r] = temp;

}

}

EDIT

I also came up with this:

it works well. Still, I'd like to see suggestions if anyone has any.Code:`void shuffle(int* a, int size){`

srand((unsigned)time(0));

for (int i = 0; i < (size-1); ++i) {

double x=rand()/(RAND_MAX+1.0);

int r = (int)(x * (size - 1));

int temp = a[i]; a[i] = a[r]; a[r] = temp;

}

}

Thanks!