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;
|
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,
|
// 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.
|
// außer zwei Einträgen (ein Duplikat). Verwendet den Binärbaum, um Duplikate zu vermeiden.
|
||||||
unsigned int *createNumbers(unsigned int len)
|
unsigned int *createNumbers(unsigned int len)
|
||||||
@ -54,6 +66,9 @@ unsigned int *createNumbers(unsigned int len)
|
|||||||
unsigned int duplicateIndex = rand() % (len - 1);
|
unsigned int duplicateIndex = rand() % (len - 1);
|
||||||
arr[len - 1] = arr[duplicateIndex];
|
arr[len - 1] = arr[duplicateIndex];
|
||||||
|
|
||||||
|
// Shuffle das Array, damit das Duplikat nicht immer am Ende steht
|
||||||
|
shuffle(arr, len);
|
||||||
|
|
||||||
// Baum freigeben
|
// Baum freigeben
|
||||||
clearTree(root);
|
clearTree(root);
|
||||||
return arr;
|
return arr;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user