Конвертировать любую строку в целое число - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу установить свое случайное семя "творчески". Это что-то вроде np.random.seed(42), и люди, которые прочитают «Руководство автостопом по галактике», получат шутку.

Однако я хочу иметь возможность запустить случайное начальное число со строки, например, цитата.

Это что-то вроде np.random.seed(str_to_int("I like cake")), для этого мне нужна функция, которая приписывает целые числа к строкам.

Я хочу, чтобы в моих строках были разрешены только буквы (если это обязательно строчные буквы), если это облегчает задачу. Функция не обязательно должна быть случайной, но было бы неплохо что-то еще, кроме функции с константой 0.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Как оказалось, в Python 3, по крайней мере, функция seed может быть выделена из строки .

В Python 2 вы можете взять CRC строки , затем использовать это в качестве начального числа .

0 голосов
/ 14 сентября 2018

Вы можете использовать функцию hash () для преобразования строки в целое число:

print(hash("tata"))

Вывод:

2314062222093390636

Это целое число, котороеможет быть использован для посева с Int.

Как указал UNIX Man , random.seed(..) может принимать str напрямую.


Из комментариев @ The Unix Man: хэш pythonиспользует рандомизацию, различные запуски одной и той же программы приводят к разным хэшам: больше информации о ней можно прочитать при

https://docs.python.org/3.3/using/cmdline.html

и параметре -R (который сохраняется для совместимости - python 3.3+рандомизация включена по умолчанию).


Итог:

не используйте hash () для разных запусков одной и той же программы, ее соли - и приведет к разным хешам между запусками.

...