Есть ли способ генерации случайного массива используя ключ?

К примеру, вводим ключ "3572250778", получаем массив: {1 19 11 93 39 92 8 15 74 7}. Вводим ключ "0817873553", получаем массив: {40 68 5 80 55 5 16 49 98 34}. То есть при вводе конкретного ключа мы получаем конкретный случайный массив. P.S Криптографическая безопасность значений не важна


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

Автор решения: Кирилл Малышев

Нужно использовать хеширование для ключа, чтобы получить целое число. Для этого подойдёт функция crc32. Далее, этим числом задаём зерно генератора псевдослучайных чисел функцией srand и генерируем массив.

$key = "3572250778";
$seed = crc32($key);
srand($seed);
$array = array();
foreach(range(0, 9) as $i) {
    $array[] = rand(0, 100);
}
var_dump($array);

Для одних и тех же ключей будут сгенерированы одни и те же целые числа. Для одних и тех же зёрен получатся одинаковые последовательности псевдослучайных чисел. Этим гарантируется, что для одинаковых ключей будут одинаковые массивы.

→ Ссылка