11

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

4

2 回答 2

19

如果你只需要一个随机整数,你可以使用random.randint(a, b)random 模块

如果您需要它用于加密目的,请使用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
于 2012-11-04T07:59:44.977 回答
9

可能不完全是主题,但我想帮助那些从搜索引擎来到这里的人。要转换os.urandom为整数,我正在使用它:

 import os

 rand = int(int(str(os.urandom(4), encoding="UTF-8")).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/

于 2015-03-07T12:53:21.580 回答