Random\Randomizer::shuffleBytes

Get a byte-wise permutation of a string

&reftitle.description; public `string` `Random\Randomizer::shuffleBytes` `string` `bytes`

Returns a uniformly selected permutation of the input `bytes`.

Each possible permutation of the input `bytes` is equally likely to be returned.

&reftitle.parameters;

`bytes`

- The &string; whose bytes are shuffled.

  The input &string; will not be modified.

&reftitle.returnvalues;

A permutation of the bytes of `bytes`.

&reftitle.errors;

&random.engineErrors;

&reftitle.examples;

### `Random\Randomizer::shuffleBytes` example

    <?php
    $r = new \Random\Randomizer();

    // Shuffle bytes in a string:
    echo "«", $r->shuffleBytes("PHP is great!"), "»\n";
    ?>

&example.outputs.similar;

    « ga rHs!PPiet»

### Byte-wise shuffling breaks Unicode characters

    <?php
    $r = new \Random\Randomizer();

    $unicode = "🍎, 🥝, 🍌, 🍑, 🍇";
    $shuffled = $r->shuffleBytes( $unicode );

    // Byte-wise shuffling of non-ASCII characters destroys them,
    // resulting in invalid sequences (indicated by the Unicode
    // replacement character) or even entirely different characters
    // appearing in the output.
    echo "Original: ", $unicode, "\n";
    echo "Shuffled: «", $shuffled, "»\n";
    echo "Shuffled Bytes: ", bin2hex($shuffled), "\n";
    ?>

&example.outputs.similar;

    Original: 🍎, 🥝, 🍌, 🍑, 🍇
    Shuffled: «� ��,�����🍟,� �� �, �,��»
    Shuffled Bytes: 87208e912c8d9fa5f0f0f09f8d9f2cf09f208c9d20f02c209f2c8d8d