python常用模块之random模块

random模块

  random模块是处理随机事件中重要的模块,随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。例如模拟掷骰子,随机生成坐标,爬虫使用随机UserAgent头等,以下是个人对random模块常用方法的学习使用小结。

官方文档参考链接

random模块常用方法

seed(a=Noneversion=2)

  功能: 改变随机数生成器的种子seed。

  参数: a: 种子值,如果是None, 使用当前系统时间戳, 如果是int,则直接使用,如果是str,bytes,bytearray则先转换为int,再使用其所有位。 version: 默认为版本二,版本一则使用 a对象的hash()

import random
>>> random.seed(10)  # 控制随机数种子
>>> random.randint(1, 100)
74
>>> random.randint(1, 100)
5
>>> random.seed(10)  # 两次生成的整数相同
>>> random.randint(1, 100)
74
>>> random.randint(1, 100)
5

randrange(startstop[, step]) | randrange(stop)

  功能: 生成一个指定范围内的随机整数(相当于随机从range对象随机取数)

  参数: start: 开始位置  stop:结束位置 step:间隔 默认为1, 可以只指定stop

>>> random.randrange(5)  # 取5以内的随机数
3
>>> random.randrange(0, 100, 7)  # 取随机的100以内的7的倍数
63

randint(ab

  功能: 生成一个[a, b]区间内的随机整数(相当于randrange(a, b+1))

  参数:   a,b 分别是左右区间

>>> random.randint(1, 3)
1
>>> random.randint(1, 3)
2

random.choice(seq)

  功能:  随机返回一个序列的值 , 如果序列为空,抛出IndexError异常

  参数: seq: 一个序列

>>> random.choice([1, 2, 3, 7])
7
>>> random.choice("abcdefg")
'g'

shuffle(x[, random])

  功能: 随机打乱一个序列

  参数: x:序列 random: 可选参数: 一个生成0-1的随机浮点数的没有参数的函数,默认是random()

>>> l = [1, 2, 3, 4]
>>> random.shuffle(l)
>>> l
[4, 2, 3, 1]
>>> random.shuffle(l)
>>> l
[2, 1, 4, 3]

sample(populationk)

  功能: 从一个群体序列中抽样k份, 返回长度为k的列表, 如果k大于群体总数,则会报ValueError异常

  参数: population: 待抽样的序列或集合 k抽样样本个数

>>> random.sample('aaaabc', 3)
['b', 'a', 'a']
>>> random.sample(range(1000000), 20) # 抽取大样本用range
[896664, 84881, 156959, 403092, 594789, 991496, 392350, 957310, 630513, 156931, 118400, 813184, 810694, 101298, 462999, 174445, 846672, 200200, 993729, 365618]

random()

  功能: 返回[0, 1)的小数

  参数: 无

>>> random.random()
0.4332315025514858
>>> random.random()
0.41408083174830124

uniform(ab)

  功能: 生成a-b之间的实数

     参数: 区间范围

>>> random.uniform(3, 1)
2.3048574875583663
>>> random.uniform(0, 1)
0.4347105489944344

 

random小练习

生成随机四位数验证码

随机4位数字

>>> ''.join((str(random.randrange(10)) for i in range(4)))
'8958'
>>> str(random.randrange(10000))
'6354'

随机字母加数字

>>> l = [chr(x) for x in range(65, 91)] + [chr(x) for x in range(97, 123)] + [str(x) for x in range(10)]
>>> ''.join((random.choice(l) for i in range(4)))
'ciED'
>>> ''.join((random.choice(l) for i in range(4)))
'md1z'
>>> ''.join((random.choice(l) for i in range(4)))
'fId3'

 

posted @ 2018-11-23 14:38  yscl  阅读(206)  评论(0)    收藏  举报