在哪里可以找到关于os.urandom的完整教程或文档?我需要得到一个随机的int来从一个80字符串
的字符串中选择一个字符我正在运行Ubuntu 12.04 在aser aspire 5920上
答案 0 :(得分:15)
如果您只需要一个随机整数,则可以使用random.randint(a, b)
from the random module。
如果您需要加密目的,请使用random.SystemRandom().randint(a, b)
,这会使用os.urandom()
。
import random
r = random.SystemRandom()
s = "some string"
print(r.choice(s)) # print random character from the string
print(s[r.randrange(len(s))]) # same
答案 1 :(得分:8)
可能不完全是主题,但我想帮助那些来自搜索引擎的人。要使用以下内容将os.urandom
转换为整数:
import os
rand = int(os.urandom(4).encode('hex'), 16)
# You can then 'cycle' it against the length.
rand_char = chars_list[rand % 80] # or maybe '% len(chars_list)'
注意:此处索引的范围最大为4字节整数。如果您想要更多,请将4
更改为更大的值。
这个想法来自这里:https://pythonadventures.wordpress.com/2013/10/04/generate-a-192-bit-random-number/