SystemRandom
有些操作系统提供了一个随机数生成器,可以访问更多引入生成器的信息源。random通过Systemdom类提供了这个特性,该类与Random的API相同,不过使用os.urandom()生成值,该值会构成所有其他算法的基础。
新建random_system_random.py文件。
import random
import time
print('Default initializiation:\n')
r1 = random.SystemRandom()
r2 = random.SystemRandom()
for i in range(3):
print('{:04.3f} {:04.3f}'.format(r1.random(), r2.random()))
print('\nSame seed:\n')
seed = time.time()
r1 = random.SystemRandom(seed)
r2 = random.SystemRandom(seed)
for i in range(3):
print('{:04.3f} {:04.3f}'.format(r1.random(), r2.random()))
以上代码输出结果为:
Default initializiation:
0.831 0.831
0.420 0.560
0.084 0.466
Same seed:
0.654 0.302
0.986 0.574
0.033 0.236
以上代码,SystemRandom产生的序列是不可再生的,因为其随机性来自系统,而不是来自软件状态。