Как сгенерировать случайное число на основе строки?

Можно ли сгенерировать псевдослучайное число на основе строки, что означает, что конкретная строка ВСЕГДА будет возвращать одно и то же число?

-3

Решение

То, что вам нужно, это не случайный, но хэширования функция.

Алгоритм хеширования создает отпечаток входных данных. Хеш обычно необратим, то есть вы не можете восстановить данные из хеша. (Однако, если алгоритм имеет недостатки, вы можете сгенерировать столкновения, но пока вы ничего не делаете с безопасностью, вам не о чем беспокоиться.)

К сожалению, в JS нет встроенных алгоритмов хеширования, поэтому вы должны реализовать свои собственные. Однако вот SO пост, который показывает реализацию: https://stackoverflow.com/a/7616484/3908235

И, видимо, есть вся библиотека с реализацией общих алгоритмов (спасибо @MattGibson).

2

Другие решения

Если вы хотите сделать это в PHP, то вы можете использовать crc32. Это не случайный но он производит числа, которые будут варьироваться в зависимости от содержимого строки. Не гарантируется на 100%, что две разные строки будут давать разные числа.

Пример:

$number = crc32("http://php.net/manual/en/function.crc32.php");

Обратите внимание, что $number будет 32-разрядным целым числом без знака, но PHP интерпретирует все целые числа как целые числа со знаком, значение может быть по-разному представлено в 32-разрядных средах, которые могут возвращать отрицательные и положительные числа, и 64-разрядных средах, которые будут возвращать только положительные числа.

Хорошая идея отформатировать вывод, используя Printf чтобы вывести это на ваш HTML,

printf("%u", $number);

Для сравнения значений, созданных в разных архитектурах, вы также должны отформатировать строку, используя Sprintf, просто чтобы быть в безопасности:

$numberToStoreShareOrCompare = sprintf("%u", $number);
0

По вопросам рекламы [email protected]