Shuffle Funktion in numbers.c
This commit is contained in:
parent
be3cb9e2fc
commit
9c0db0ff31
BIN
highscore.o
Normal file
BIN
highscore.o
Normal file
Binary file not shown.
@ -1,5 +1 @@
|
||||
player_name;4993
|
||||
player_name;4992
|
||||
player_name;4990
|
||||
player_name;4953
|
||||
player1;3999
|
||||
|
||||
|
||||
15
numbers.c
15
numbers.c
@ -16,6 +16,18 @@ static int compareUInt(const void *a, const void *b)
|
||||
return 0;
|
||||
}
|
||||
|
||||
// --- Hilfsfunktion: Shuffle des Arrays (Fisher-Yates) ------------------
|
||||
static void shuffle(unsigned int *array, unsigned int len)
|
||||
{
|
||||
for (unsigned int i = len - 1; i > 0; i--)
|
||||
{
|
||||
unsigned int j = rand() % (i + 1);
|
||||
unsigned int temp = array[i];
|
||||
array[i] = array[j];
|
||||
array[j] = temp;
|
||||
}
|
||||
}
|
||||
|
||||
// Gibt ein Array mit len zufälligen Zahlen zwischen 1 und 2*len zurück, die alle unterschiedlich sind,
|
||||
// außer zwei Einträgen (ein Duplikat). Verwendet den Binärbaum, um Duplikate zu vermeiden.
|
||||
unsigned int *createNumbers(unsigned int len)
|
||||
@ -54,6 +66,9 @@ unsigned int *createNumbers(unsigned int len)
|
||||
unsigned int duplicateIndex = rand() % (len - 1);
|
||||
arr[len - 1] = arr[duplicateIndex];
|
||||
|
||||
// Shuffle das Array, damit das Duplikat nicht immer am Ende steht
|
||||
shuffle(arr, len);
|
||||
|
||||
// Baum freigeben
|
||||
clearTree(root);
|
||||
return arr;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user