diff --git a/I2_Dobble/numbers.c b/I2_Dobble/numbers.c index fea8960..f3f23d2 100644 --- a/I2_Dobble/numbers.c +++ b/I2_Dobble/numbers.c @@ -13,10 +13,23 @@ static void dublicateRandomEntry (unsigned int *numbers, unsigned int len) { - unsigned int dubIndx = rand() % len; - unsigned int copyIndx = rand() % len; + if (numbers && len > 2) + { + unsigned int dubIndx = rand() % len; + unsigned int copyIndx; + + do { + copyIndx = rand() % len; + } while (copyIndx == dubIndx); - numbers[copyIndx] = numbers[dubIndx]; + numbers[len - 1] = numbers[dubIndx]; + + //switching last entry with random other entry + unsigned int temp; + temp = numbers[copyIndx]; + numbers[copyIndx] = numbers[len - 1]; + numbers[len - 1] = temp; + } } static int compare(const void *a, const void *b)