今天看啥  ›  专栏  ›  酷飒de小姐姐

随机数库

酷飒de小姐姐  · 简书  ·  · 2021-04-03 08:26

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库生成的是伪随机数,即该模块生成的并不是完全随机数。由于生成完全随机数的难度较大,所以在各种随机数库的实现中生成的都是伪随机数。




原文地址:访问原文地址
快照地址: 访问文章快照