@modern-kit/utils
Version:
1 lines • 1.26 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../src/array/shuffle/index.ts"],"sourcesContent":["import { swap } from '../../array/swap';\n\n/**\n * @description 배열의 요소들의 순서를 무작위로 섞습니다.\n *\n * https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n * Fisher–Yates shuffle의 현대 알고리즘을 기반으로 구현됐습니다.\n *\n * @param arr - 셔플할 배열입니다.\n * @returns {T[]} 순서가 무작위로 섞인 새로운 배열입니다.\n *\n * @example\n * const array = [1, 2, 3, 4, 5];\n * shuffle(array);\n * // 순서가 무작위로 섞인 배열 ex. [3, 1, 4, 5, 2]\n */\nexport function shuffle<T>(arr: T[] | readonly T[]): T[] {\n const result = arr.slice();\n\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n\n swap(result, i, j);\n }\n\n return result;\n}\n"],"names":[],"mappings":";;AAgBO,SAAS,QAAW,GAAA,EAA8B;AACvD,EAAA,MAAM,MAAA,GAAS,IAAI,KAAA,EAAM;AAEzB,EAAA,KAAA,IAAS,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK;AAC1C,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,IAAK,IAAI,CAAA,CAAE,CAAA;AAE5C,IAAA,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAC,CAAA;AAAA,EACnB;AAEA,EAAA,OAAO,MAAA;AACT;;;;"}