diff options
Diffstat (limited to 'src/client/utils/shuffle.ts')
| -rw-r--r-- | src/client/utils/shuffle.ts | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/client/utils/shuffle.ts b/src/client/utils/shuffle.ts new file mode 100644 index 0000000..a2b8fec --- /dev/null +++ b/src/client/utils/shuffle.ts @@ -0,0 +1,14 @@ +/** + * Fisher-Yates shuffle algorithm. + * Returns a new shuffled array (does not mutate the original). + */ +export function shuffle<T>(array: T[]): T[] { + const result = [...array]; + for (let i = result.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + const temp = result[i] as T; + result[i] = result[j] as T; + result[j] = temp; + } + return result; +} |
