python的random模块函数分析(一)

random是python产生伪随机数的模块,随机种子默认为系统时钟。下面分析模块中的方法:

1.random.randint(start,stop):

这是一个产生整数随机数的函数,参数start代表最小值,参数stop代表最大值,两端的数值都可以取到;

函数算法时间复杂度:O(1)
核心源代码:
return self.randrange(a, b+1)   # 由randrange函数封装而来
例子:

1 for i in range(20):
2   print(rm.randint(0, 10), end=‘ ‘)

2.random.randrange(start,stop,step):
也是一个随机整数函数,参数可选;

当只有一个参数时,默认随机范围0到该参数,前闭后开;两个参数,最小值和最大值,前闭后开;三个参数,最小值,最大值和步长,前闭后开。

算法时间复杂度:O(1)
核心源代码:
return istart + istep*self._randbelow(n)    # 该函数由_randbelow函数封装得到
例子:

1 for i in range(10):
2   print(random.randrange(10)) # 产生0到10(不包括)的随机数
3   print(random.randrange(5,10)) # 产生5到10(不包括)的随机数
4   print(random.randrange(5,100,5)) # 产生5到100(不包括)范围内的5的倍数的随机数

3.choice(seq):

一个随机选择函数,seq是一个非空的集合,在集合中随机选择一个元素输出,元素的类型没有限制。
核心源代码:
i = self._randbelow(len(seq))    # 由_randbelow函数得到随机的下标
return seq[i]
时间复杂度:O(1)
例子:

1 list3 = ["wo", "我是", 2, 8, [2, 3]]
2 for j in range(10):
3   print(rm.choice(list3),end=" ")

4.random():

这个函数形成从0.0到1.0之间的任意浮点数,左闭右开,没有参数。
例子:

1 for j in range(10):
2   print(rm.random(),end=" ")

5.send(n=None):

一个可以对随机数生成器进行初始化的函数,n代表随机种子;当n=None时,随机种子为系统时间,当n为其他的数据,如int,str等,则以提供的数据作为随机种子,此时生成的随机数列固定。

例子:

1 rm.seed("hdsfsf")
2 for i in range(20): # 无论启动多少次程序,输出的序列不变
3   print(rm.randint(0, 10), end=‘ ‘)

6.getstate()和setstate(state):

getstate()函数用来记录随机数生成器的状态,setstate(state)函数用来将生成器恢复到上次记录的状态。
例子:

1 tuple1 = rm.getstate() # 记录生成器的状态
2 for i in range(20):
3   print(rm.randint(0, 10), end=‘ ‘)
4 print()
5 rm.setstate(tuple1) # 传入参数后恢复之前的状态
6 for j in range(20):
7   print(rm.randint(0, 10), end=‘ ‘) # 两组输出的结果一样

7.shuffle(seq,random=None):

对传入的集合进行乱序操作。只能针对可变序列,如字符串、列表,对于元组等不可变序列会报错,random用来选择乱序操作的方式,如:random=random。
核心源代码:

for i in reversed(range(1, len(x))):
j = randbelow(i+1)
x[i], x[j] = x[j], x[i]

时间复杂度:O(n)
例子:

1 list3 = ["wo", "我是", 2, 8, [2, 3]]
2 print(list3)
3 rm.shuffle(list3, random=None)
4 print(list3)

8.sample(population, k):

population参数是一个序列,如列表、元组、集合、字符串等;从集合中随机抽取K个元素形成新的序列,不会改变原有的序列。

核心源代码:

for i in range(k):
j = randbelow(n) # 使用randbelow函数获得一个随机整数
while j in selected: # 对取得的随机数去重
j = randbelow(n)
selected_add(j)
result[i] = population[j] # 赋值

最坏时间复杂度:O(n*n)
例子:

1 list3 = ["wo", "我是", 2, 8, [2, 3], 2, 2, 8]
2 print(list3)
3 list1 = rm.sample(list3, 4)
4 print(list1)

9.uniform(a, b):

生成参数a到b之间的浮点数的函数,如果a > b,则生成b到a之间的浮点数。
核心源码:
return a + (b-a) * self.random()    # random函数的一个封装
时间复杂度:O(1)
例子:

1 for i in range(10):
2   print(rm.uniform(10, 1))
时间: 2024-10-12 23:43:35

python的random模块函数分析(一)的相关文章

Python随机数random模块学习,并实现生成6位验证码

一.前言 学习python随机数random模块的使用 ,并使用模块中的函数,实现6位验证码生成 二.random模块 1.random.random() 返回0-1直接的随机数,类型为float >>>print(random.random()) 0.1259184691662908 2.random.randint(1, 8) 返回1-8直接的随机数,包括8 >>>print(random.randint(1, 8)) 3 3.random.choice() 从一个

python的random模块(生成验证码)

python的random模块(生成验证码) random模块常用方法 random.random() #生成0到1之间的随机数,没有参数,float类型 random.randint(1, 3) #生成参数1到参数2之间的随机数,输出为int类型,[1,3] random.randrange(1, 3) #生成参数1到参数2之间的随机数,输出为int类型,[1,3),这个方法还有一种用法,就是下面介绍的这种 random.randrange(0,100,2) #从指定范围内,按指定基数递增的集

ZH奶酪:【Python】random模块

Python中的random模块用于随机数生成,对几个random模块中的函数进行简单介绍.如下:random.random() 用于生成一个0到1的随机浮点数.如: import random random.random() 输出: 0.3701787746508932 random.uniform(a,b) 用于生成一个指定范围内的随机浮点数,两个参数一个是上线,一个是下线.如: random.uniform(10,20) 输出: 16.878776709127855 random.rand

python 之 random 模块、 shutil 模块、shelve模块、 xml模块

6.12 random 模块 print(random.random()) (0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3)) [1,3] 大于等于1且小于等于3之间的整数 print(random.randrange(1,3)) [1,3) 大于等于1且小于3之间的整数 print(random.choice ( [1,'23', [4,5] ] ) )   1或者23或者[4,5] print(random.sample( [1,'2

python之random模块

random模块 用于生成随机浮点数.整数.字符串和随机抽取元素 方法: random()  生成一个随机浮点数,范围在0.0~1.0之间 uniform(上限,下限)  在设置的范围内,随机生成一个浮点数(上下限可以是整数,浮点数) randint(上限,下限)  在设定的范围内,随机生成一个整数(上下限必须为整数) choice(序列)  从任何序列中选取一个随机的元素返回 shuffle(序列)  随机打乱一个序列中元素的顺序 sample(序列,长度)  从指定的序列中随机截取指定长度的

Python中re模块函数使用介绍

Python中通过re模块实现了正则表达式的功能.re模块提供了一些根据正则表达式进行查找.替换.分隔字符串的函数.本文主要介绍re模块中常用的函数和函数常用场景. re模块常用函数 1.match(pattern,string,flags=0) 根据pattern从string的头部开始匹配字符串,只返回第1次匹配成功的对象,否则,返回None.flags表示规则选项. >>> import re >>> Str='Python:Java:C' >>>

python之-- random模块

random模块random.random():随机打印一个小数random.randint(1,10):随机打印1-10之间的任意数字(包括1和10)random.randrange(1,10):随机打印1-10之间的任意数字(不包括10)random.sample(range(100),5):从100个数字中随机抽取5个数字以列表形式打印.可以用作随机验证码或密码使用 如:random.sample('abcde',3) 随机生成3个字符. 举例:生成随机验证码 第一种写法 1 import

Python之 random 模块

#!/usr/bin/env python # -*- coding:utf8 -*- import random ''' 如果想要随机的内容的话,就可以使用这个模块来完成 ''' ############## 随机模块应用函数 ############## def v_code(): ''' 随机验证码函数 ''' ret = "" for i in range(5): num = random.randint(0,9) # 获取随机数字 alf = chr(random.randi

python的random模块

As an example of subclassing, the random module provides the WichmannHill class that implements an alternative generator in pure Python. The class provides a backward compatible way to reproduce results from earlier versions of Python, which used the