in reply to Re^6: Algorithm RFC: fast (pseudo-)random shuffle with no repetition
in thread Algorithm RFC: fast (pseudo-)random shuffle with no repetition

So this aren’t valid permutations?

karl@h3002993:~/src/perl$ ./pmute.pl 1 8 1 2 1 7 1 3 1 6 1 5 1 4 1 karl@h3002993:~/src/perl$ ./pmute.pl 1 3 1 4 1 7 1 5 1 2 1 6 1 8 1 karl@h3002993:~/src/perl$ ./pmute.pl 1 4 1 8 1 6 1 5 1 3 1 2 1 7 1 karl@h3002993:~/src/perl$ ./pmute.pl 1 5 1 8 1 2 1 4 1 6 1 3 1 7 1 karl@h3002993:~/src/perl$ ./pmute.pl 1 7 1 5 1 4 1 3 1 8 1 2 1 6 1

FYI

karl@h3002993:~/src/perl$ time ./pmute.pl 1 4 1 3 1 2 1 6 1 5 1 7 1 8 1 real 0m0,081s user 0m0,076s sys 0m0,004s karl@h3002993:~/src/perl$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 46 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 1 On-line CPU(s) list: 0 Vendor ID: GenuineIntel Model name: Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz …

«The Crux of the Biscuit is the Apostrophe»

Replies are listed 'Best First'.
Re^8: Algorithm RFC: fast (pseudo-)random shuffle with no repetition
by LanX (Saint) on Sep 24, 2023 at 17:49 UTC
    > So this aren’t valid permutations?

    They are. Mea culpa.

    You are listing the permutations of the fillers between the fixed 1s, hence 7! valid solutions.

    See Re^8: Algorithm RFC: fast (pseudo-)random shuffle with no repetition for what I meant and try (1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2) instead.

    If this doesn't convince you that try-and-error isn't a good idea, try adding even more 1s and 2s.

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    see Wikisyntax for the Monastery