Генерировать рандомные числа в заданном диапазоне с заданным количеством

Мне нужно изменить текст на последовательность из нуля и единиц случайным образом. И что бы количество нулей и единиц равнялось количеству символов которые были изначально в файле.

Я знаю что есть функция

mt_rand(min,max)

Но к сожалению она выводит только одно число, а мне надо такое же количество как и символов в файле.

$quantity_string = mb_strlen(strip_tags( implode('', file ('file.txt')) ));

Так я узнаю количество символов в тексте, но вот как их заменить на последовательность из 0 и 1 которое будет совпадать с количеством изначальных символов я не знаю.

$change_file1 = '1010101010101010';
file_put_contents('changeValue.txt', $change_file1);

А вот так я меняю значение в файле

У кого какие идеи?

UPD: Я немного изменил код @cassius , но теперь весь текст который был в файле преобразуется только в один символ 0 или 1 (рандомно)

$strSource = file('file/change value.txt'); // исходная строка
$strSouce_to_array = implode($strSource); // строка в массив

            $arraySource = str_split($strSouce_to_array);
            $arrayBinary = array_map(function() {
                return rand(0, 1);
            }, $arraySource);

            $strBinary = implode($arrayBinary); // закодированная строка
            echo $strBinary;


Ответы (2 шт):

Автор решения: cassius

Алгоритм такой: нужно исходную строку преобразовать в массив, потом каждый элемент массива заменить символом 0 или 1, далее полученный массив преобразовать в строку.

$strSource = "Hello world!"; // исходная строка

$arraySource = str_split($strSource);
$arrayBinary = array_map(function() {
    return rand(0, 1);
}, $arraySource);

$strBinary = implode($arrayBinary); // закодированная строка
→ Ссылка
Автор решения: Ein

Можно взять длину строки и создать случайную такой же длины.


$strSource = "Hello World!";
var_dump($strSource, strToRndBin($strSource));
//string(12) "Hello World!"
//string(12) "100010101100"

$strSource = "Привет мир!";
var_dump($strSource, strToRndBin($strSource));
//string(20) "Привет мир!"
//string(11) "10011000110"

function strToRndBin($string) {
    $len = mb_strlen($string);
    $string = '';   
    for($i=0; $i<$len; $i++)
        $string .= rand(0,1);   
    return $string;
}

Если нужно именно изменить строку то, можно передать ссылку

$strSource = "Привет мир!";
strToRndBin($strSource);
var_dump($strSource);
//string(11) "11011010110"

function strToRndBin(&$string) {
    $len = mb_strlen($string);
    $string = '';
    
    for($i=0; $i<$len; $i++)
        $string .= rand(0,1);
    
    return $string;
}

→ Ссылка