Python 3 os.urandom

时间:2012-11-04 07:55:22

标签: python random python-3.x

在哪里可以找到关于os.urandom的完整教程或文档?我需要得到一个随机的int来从一个80字符串

的字符串中选择一个字符

我正在运行Ubuntu 12.04 在aser aspire 5920上

2 个答案:

答案 0 :(得分:15)

如果您只需要一个随机整数,则可以使用random.randint(a, b) from the random module

如果您需要加密目的,请使用random.SystemRandom().randint(a, b),这会使用os.urandom()

Example

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/