{"version":3,"sources":["../../../src/arrays/shuffle.ts"],"sourcesContent":["/**\n * Randomizes the order of elements in an array using the Fisher-Yates algorithm.\n *\n * This function takes an array and returns a new array with its elements shuffled in a random order.\n *\n * @template T - The type of elements in the array.\n * @param {T[]} arr - The array to shuffle.\n * @returns {T[]} A new array with its elements shuffled in random order.\n *\n * @example\n * const array = [1, 2, 3, 4, 5];\n * const shuffledArray = shuffle(array);\n * // shuffledArray will be a new array with elements of array in random order, e.g., [3, 1, 4, 5, 2]\n */\nexport function shuffle<T>(arr: readonly T[]): T[] {\n  const result = arr.slice();\n\n  /**\n   * https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm\n   */\n  for (let i = result.length - 1; i >= 1; i--) {\n    const j = Math.floor(Math.random() * (i + 1));\n    let temp = result[i];\n    let resultJ = result[j];\n\n    if (!(resultJ && temp)) {\n      continue;\n    }\n\n    [temp, resultJ] = [resultJ, temp];\n  }\n\n  return result;\n}\n"],"mappings":";AAcO,SAAS,QAAW,KAAwB;AACjD,QAAM,SAAS,IAAI,MAAM;AAKzB,WAAS,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,KAAK;AAC3C,UAAM,IAAI,KAAK,MAAM,KAAK,OAAO,KAAK,IAAI,EAAE;AAC5C,QAAI,OAAO,OAAO,CAAC;AACnB,QAAI,UAAU,OAAO,CAAC;AAEtB,QAAI,EAAE,WAAW,OAAO;AACtB;AAAA,IACF;AAEA,KAAC,MAAM,OAAO,IAAI,CAAC,SAAS,IAAI;AAAA,EAClC;AAEA,SAAO;AACT;","names":[]}