Post History
Idea shamelessly stolen from caird and rak1507 Shuffle a subset of a list of unique, positive integers with uniform randomness, given the indices of that subset. For example, given the list $[A, B...
#2: Post edited
Shuffle a subset of a list
- <sup>Idea shamelessly stolen from [caird](https://chat.stackexchange.com/transcript/message/58238435#58238435) and [rak1507](https://chat.stackexchange.com/transcript/message/58238593#58238593)</sup>
- Shuffle a subset of a list of unique, positive integers with uniform randomness, given the indices of that subset. For example, given the list \$[A, B, C, D, E, F, G, H]\$ and the indices \$[0, 3, 4, 5, 7]\$ (0-indexed), you would extract the list \$[A, D, E, F, H]\$, shuffle it, and insert the shuffled elements back according to the list of indices. Some possible results of this are (elements that stayed in place are bolded)
- $$[H, \textbf{B}, \textbf{C}, D, A, E, \textbf{G}, F]$$
- $$[A, \textbf{B}, \textbf{C}, D, E, F, \textbf{G}, H]$$
- $$[F, \textbf{B}, \textbf{C}, E, A, H, \textbf{G}, D]$$.
- ## Rules
- - Every possible rearrangement of the list should have a non-zero chance of being chosen.
- - You may use zero- or one-indexing, but please specify which you use.
- - The indices in the input are guaranteed to be unique and valid.
- This is code golf, so least number of bytes wins.- ## Test cases
- All of these examples use 0-indexing.
- ```
- List
- Indices
- Possible output
- [1,2,3,4,5,6,7]
- [0,1,2,3,4,5,6]
- [2,3,6,1,0,4,5], etc.
- [1,2,3,4,5,6,7]
- [0,2,4,6]
- [3,2,7,4,5,6,1], etc.
- [93,6,10,1,200,41,78,31,34,27]
- [0,3,4,8,9]
- [1,6,10,27,93,41,78,31,200,34], etc.
- ```
- <sup>Idea shamelessly stolen from [caird](https://chat.stackexchange.com/transcript/message/58238435#58238435) and [rak1507](https://chat.stackexchange.com/transcript/message/58238593#58238593)</sup>
- Shuffle a subset of a list of unique, positive integers with uniform randomness, given the indices of that subset. For example, given the list \$[A, B, C, D, E, F, G, H]\$ and the indices \$[0, 3, 4, 5, 7]\$ (0-indexed), you would extract the list \$[A, D, E, F, H]\$, shuffle it, and insert the shuffled elements back according to the list of indices. Some possible results of this are (elements that stayed in place are bolded)
- $$[H, \textbf{B}, \textbf{C}, D, A, E, \textbf{G}, F]$$
- $$[A, \textbf{B}, \textbf{C}, D, E, F, \textbf{G}, H]$$
- $$[F, \textbf{B}, \textbf{C}, E, A, H, \textbf{G}, D]$$.
- ## Rules
- - Every possible rearrangement of the list should have a non-zero chance of being chosen.
- - You may use zero- or one-indexing, but please specify which you use.
- - The indices in the input are guaranteed to be unique and valid.
- - This is <a class="badge is-tag">code golf</a>, so least number of bytes wins.
- ## Test cases
- All of these examples use 0-indexing.
- ```
- List
- Indices
- Possible output
- [1,2,3,4,5,6,7]
- [0,1,2,3,4,5,6]
- [2,3,6,1,0,4,5], etc.
- [1,2,3,4,5,6,7]
- [0,2,4,6]
- [3,2,7,4,5,6,1], etc.
- [93,6,10,1,200,41,78,31,34,27]
- [0,3,4,8,9]
- [1,6,10,27,93,41,78,31,200,34], etc.
- ```
#1: Initial revision
Shuffle a subset of a list
<sup>Idea shamelessly stolen from [caird](https://chat.stackexchange.com/transcript/message/58238435#58238435) and [rak1507](https://chat.stackexchange.com/transcript/message/58238593#58238593)</sup> Shuffle a subset of a list of unique, positive integers with uniform randomness, given the indices of that subset. For example, given the list \$[A, B, C, D, E, F, G, H]\$ and the indices \$[0, 3, 4, 5, 7]\$ (0-indexed), you would extract the list \$[A, D, E, F, H]\$, shuffle it, and insert the shuffled elements back according to the list of indices. Some possible results of this are (elements that stayed in place are bolded) $$[H, \textbf{B}, \textbf{C}, D, A, E, \textbf{G}, F]$$ $$[A, \textbf{B}, \textbf{C}, D, E, F, \textbf{G}, H]$$ $$[F, \textbf{B}, \textbf{C}, E, A, H, \textbf{G}, D]$$. ## Rules - Every possible rearrangement of the list should have a non-zero chance of being chosen. - You may use zero- or one-indexing, but please specify which you use. - The indices in the input are guaranteed to be unique and valid. - This is code golf, so least number of bytes wins. ## Test cases All of these examples use 0-indexing. ``` List Indices Possible output [1,2,3,4,5,6,7] [0,1,2,3,4,5,6] [2,3,6,1,0,4,5], etc. [1,2,3,4,5,6,7] [0,2,4,6] [3,2,7,4,5,6,1], etc. [93,6,10,1,200,41,78,31,34,27] [0,3,4,8,9] [1,6,10,27,93,41,78,31,200,34], etc. ```