~~Your algorithm is not a Fisher-Yates shuffle. ~~`shuffl` chooses a random number between 1 and the number of elements (inclusive) each time. A Fisher-Yates shuffle chooses from a smaller set each iteration to avoid performing a biased shuffle.

Using the dataset A, B, C and D there are 24 possible outcomes (4!), each one with an equal probability of 1/24. The algorithm used for `sub shuffl` selects 4 random numbers each with a possible value of 1, 2, 3 or 4, or a total of 4^{4} (256) possible outcomes, each with a probability of 1/256 (some of the final permutations are duplicated). 256 is not evenly divisible by 24, so some of the outcomes **must** be more likely than others.

**Update:** Oops. BrowserUK's shuffle is indeed a Fisher-Yates shuffle. `$a = $_ + rand @{$r} - $_` is parsed as `$a = $_ + (rand @{$r} - $_)`. I assumed it would be parsed as `$a = $_ + (rand @{$r}) - $_`

Comment onRe: Re: Re: Re: random elements from array - new twistSelectorDownloadCode