python——random库浅谈

一、概述

       random库是使用随机数的python标准库,其实计算机并不能产生随机数,所谓的随机数其实是通过一系列复杂的运算所产生的数值,也称为伪随机数,通常是由梅森旋转算法产生,基本过程如下:
在这里插入图片描述
这里,如果每次选取的随机数种子相同,那么所产产生的随机数也是相同的,这个可以向我们提供程序的可再现性,当然,随机数的种子也可以不指定,那么,他将会直接使用系统的时间作为随机数的种子,从而产生随机序列。 下面简单说一下random库中所包含的函数。

二、random函数

这里我们我们主要看两个主要函数–>seed()函数random()函数及其他六个扩展函数。

2.1 random.seed()

在这里插入图片描述\

  • seed函数主要是利用种子去产生一个随机数序列,指定的种子对应指定的随机数序列,如果不对种子赋值或者不调用seed函数,默认使用当前的时间作为种子去产生一个随机数序列。

2.2 random.random()

在这里插入图片描述

  • random函数主要是生成随机数,上一个函数生成的是随机数列,random函数只能生成一个[0,1)之间的小数,如果之前调用seed函数,指定种子=10,这里产生的第一个小数一定是0.57,随机小数的产生与种子有关

简单示例:

>>> import random
>>> random.seed(10)
>>> random.random()    ##一次调用产生随机数,以后的随机数都是通过种子10产生的。
0.5714025946899135
>>> random.random()
0.4288890546751146
>>> random.random()
0.5780913011344704
>>> random.random()
0.20609823213950174

注意:

  • 这里如果不调用seed函数,默认使用调用第一次random函数时系统的时间作为种子,以后调用random函数,都是利用第一次的作为种子,而不重新选取了。
  • 对于是否使用种子,我们要看实际的需求,如果我们以后想要实现程序的再现,可以给定种子,从而产生相同的随机数序列,如果以后不需要程序的再现性,我们可以不指定种子。
>>> random.seed(10)
>>> random.random()
0.5714025946899135
>>> random.seed(10)
>>> random.random()
0.5714025946899135  #两次随机数相同

2.3 random.randint()函数

在这里插入图片描述

  • randint函数支持我们给定区间,从而产生一个区间 [a,b] 内的整数。
>>> random.randint(1,100)
55
>>> random.randint(1,100)
62
>>> random.randint(1,100)
74

2.4 random.randrange()

在这里插入图片描述

  • 生成整数的区间为 [m,n) ,同时我们也可以指定步长。
>>> random.randrange(1,100)
2
>>> random.randrange(1,100,10)   # 1+3*10
31

2.5 random.getrandbits()

在这里插入图片描述

示例:

>>> random.getrandbits(32)
1986768135
>>> random.getrandbits(16)
53301
#这里是无符号数,16bit对应2字节,32bit对应4字节大小。
#数值取值范围:16bit ---->  [0,65535],  32bit--->[0,4294967295]

2.6 random.uniform()

在这里插入图片描述

  • 小数默认取浮点数的精度,小数点后的十六位。
>>> random.uniform(10,100)
35.52563961160436
>>> random.uniform(10,100)
70.74683624214603

2.7 对于序列的操作

在这里插入图片描述
对于我们要将几条语句写在一行执行,我们可以中间使用封号隔开。
示例:

>>> random.choice([1,2,3,4,5])
4
>>> random.choice([1,2,3,4,5])
2

>>> s = [1,2,3,4,5]
>>> random.shuffle(s)
>>> print(s)
[4, 2, 1, 5, 3]
>>> random.shuffle(s)
>>> print(s)
[4, 3, 1, 5, 2]    

2.8 random.sample()

  • random.sample(seq,k)从指定序列中随机获取指定长度的,且不重复出现的片段
   >>> l=['a','b','c','d','e']
    >>> s=random.sample(l,2)
    >>> s
    ['c', 'a']
     
    >>> l
    ['a', 'b', 'c', 'd', 'e']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值