random库
Python自带了一个random库,该库可以随机生成一些数,常用来生成一个随机实数或者随机整数。
可以用random.random()来随机生成一个0到1之间的实数。如果希望生成一个整数,则可以使用random.randint(开始值,结尾值)来得到指定范围内的一个整数。
另外一个常用的函数是random.choice(),其接收一个列表,返回值是从输入列表中随机选中一个元素。可以用该函数来模拟掷骰子,如下:
import random
shaizi = [1,2,3,4,5,6]
print(random.choice(shaizi))
另外一个常用函数是random.shuffle(),用于将某个列表打乱顺序可以使用random.shuffle()函数来完成任务,该函数没有返回值。
import random
a =list(range(10))
random.shuffle(a)
print(a)
该函数可以用来模拟洗扑克牌的动作。一副扑克牌有54张,最开始它们是有序排列的,下面使用shuffle()函数来实现洗牌的功能。
import random
def init_cards():
ret = []
for iin range(1,13):
ret.append((i,u'红桃'))
ret.append((i,u'方片'))
ret.append((i,u'梅花'))
ret.append((14,u'大王'))
ret.append((14,u'小王'))
return ret
cards = init_cards()
random.shuffle(cards)
for cardin cards:
if card[0] ==14:
print(card[1])
else:
print("%s%d" %(card[1],card[0]))
伪随机问题
random模块生成的数具有基本的随机特性,但其并不是真正的随机数。例如随机生成整数,我们可以让其生成两串整数,每串10个数,可以发现这两串数是不同的,并且任意时刻让其生成10个整数,它似乎都会生成不同的数。如下代码:
随机其实我们生成的随机序列是受一个叫作种子的变量控制的。只要修改了种子的值,那么生成的序列就是确定的。如下代码:
固定随机得到的序列是一样的。这就是为何random库生成的是伪随机数,即该模块生成的并不是完全随机数。由于生成完全随机数的难度较大,所以在各种随机数库的实现中生成的都是伪随机数。
网友评论