>>> import random
>>> random.SystemRandom.randint(0, 10)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
random.SystemRandom.randint(0, 10)
TypeError: randint() missing 1 required positional argument: 'b'
Run Code Online (Sandbox Code Playgroud)
SystemRandom应该给随机数不过os.urandom,randint就像正常的randrange:
>>> print(random.SystemRandom.randint.__doc__)
Return random integer in range [a, b], including both end points.
Run Code Online (Sandbox Code Playgroud)
在IDLE中,当我输入它时,会出现一个小弹出建议
`random.SystemRandom.randint(self, a, b)`
Run Code Online (Sandbox Code Playgroud)
我认为这是原因.我不是很擅长使用类并理解它们是如何工作的,但第一个参数似乎正在被传递self,应该是什么时候a.我从来没有真正理解为什么self在它甚至不是关键字时使用,以及它应该如何才能正常工作,但它通常会这样做.
我这样做错了,或者我应该在每次应该做这样的事情时向Python基金会报告这个问题?
我想你想要:
import random
r = random.SystemRandom()
print(r.randint(0, 10))
Run Code Online (Sandbox Code Playgroud)
代替.
这是因为您需要创建random.SystemRandom该类的实例.
但是,您可以轻松使用以下内容:
import random
random.randint(0, 10)
Run Code Online (Sandbox Code Playgroud)
如果您不需要依赖于操作系统的加密RNG.
random.SystemRandom是一个班级.它需要实例化;
In [5]: foo = random.SystemRandom()
In [6]: foo.randint(0, 10)
Out[6]: 0
Run Code Online (Sandbox Code Playgroud)
完整的文档字符串给出了一个提示;
In [12]: random.SystemRandom.randint?
Signature: random.SystemRandom.randint(self, a, b)
Docstring: Return random integer in range [a, b], including both end points.
File: /usr/local/lib/python3.4/random.py
Type: function
Run Code Online (Sandbox Code Playgroud)
的self参数表明,该randint是一个方法的SystemRandom.