# [Vyxal](https://github.com/Vyxal/Vyxal), 13 bytes ``` ẏÞS℅~İṖ℅Z(n÷Ȧ ``` [Try it Online!](https://vyxal.pythonanywhere.com/#WyIiLCIiLCLhuo/DnlPihIV+xLDhuZbihIVaKG7Dt8imIiwiIiwiWzUsIDEsIDIsIDcsIDRdIl0=) ## Explained ``` ẏÞS℅~İṖ℅Z(n÷Ȧ ẏ # Push the input and the range [0, len(input)) ÞS℅ # Choose a random sublist of indices ~İ # And index into the input at those places, without popping anything Ṗ℅ # Choose a random permutation of the indexed items Z # and zip that with the chosen indices - this creates a list of [[original index, new item]...] ( # for each pair: n÷Ȧ # input[original index] = new item ```