python学习之 --- random库的高级使用方法

插图1

random库概述

主要功能

random 库主要功能是生成随机数.

基本随机数的产生

随机数的产生方法:需要一个随机数种子,再根据梅森旋转算法,产生一个随机数序列,随机数种子确定,那么随机数序列的数和数之间的关系也是确定的.

因为随机数的产生方法,python中的随机数都是伪随机数,只要随机数种子确定,随机数序列也是确定的。

random库的常用函数

random库与随机数运用

函数 描述
seed(a=None) 初始化随机数种子,默认值为当前系统时间
random() 生成一个[0.0, 1.0)之间的随机小数
randint(a, b) 生成一个[a,b]之间的整数
getrandbits(k) 生成一个k比特长度的随机整数
randrange(start, stop[, step]) 生成一个[start, stop)之间以step为步数的随机整数
uniform(a, b) 生成一个[a, b]之间的随机小数
choice(seq) 从序列类型(例如:列表)中随机返回一个元素
shuffle(seq) 将序列类型中元素随机排列,返回打乱后的序列
sample(pop, k) 从pop类型中随机选取k个元素,以列表类型返回

实例举证:

seed:

random的默认随机种子是以当前时间进行的,所以在产生随机的伪随机数,并不是真正意义上的随机,虽然不至于影响使用,但我们需要知道其内部原理.

import random
random.seed(10)
print(random.random())#(1)
random.seed(10)
print("seed 10 again")
print(random.random())#(2)
print(random.random())#(3)
>>>#(1)=#(2)  #(3)-->随机小于1的数 
>>>
0.5714025946899135
seed 10 again
0.5714025946899135
0.4288890546751146

shuffle
就地修改列表,随机排列

ls = [1,3,4,5,8,10]
random.shuffle(ls)
print(ls)
>>[3, 1, 5, 10, 4, 8]  
list1= [1,2,3,4,5]
tuple1 = (1,2,3,5,6)
#set1= {1,2,3,4,5,6}#本就无序 不能使用shuffle
string1 = "123456"
#dict1= {'x':1,'y':2,'z':3}#本就无序  不能使用shuffle

sample:

random.sample(ls,2)
>>[5,8]  
random.sample([1,1],2)  
>>[1,1]   

随机取多个数时,不取重复的两个数
[1,1 ]虽然数字相同,但是索引不一样,所以不是相同两个数

randint(a,b)

随机生成[a,b]之间的整数.

import random 
print(random.randint(10,15))
print(random.randint(10,15))
print(random.randint(10,15))
print(random.randint(10,15))
>>>
13
12
15
11
#所取的值是闭区间

choice

从序列类型(例如:列表)中随机返回一个元素

list1= [1,2,3,4,5]
tuple1 = (1,2,3,5,6)
set1= {1,2,3,4,5,6}
string1 = "123456"
dict1= {'x':1,'y':2,'z':3}
print(random.choice(list1))
print(random.choice(tuple1))
# print(random.choice(set1))
print(random.choice(string1))
# print(random.choice(dict1))
>>> 3  1  4
# 字典和集合是无序的,所以不能随机取出

randrange(M,N[,K])

生成一个范围M到N,步长为K的随机整数

random.randrange(10,20,2)
>>>14   18    12  16  生成的随机数都是从10 开始,步进为2(10--20 的偶数)

猜你喜欢

转载自blog.csdn.net/qq_40498551/article/details/89530981