random模块是Python/ target=_blank class=infotextkey>Python中一个用于生成随机数的模块,其中包含了生成伪代随机数的函数,有助于编写模拟程序或者生成随机输出的程序。需要注意的是这些数虽然看起来好像是完全随机的,但是他们背后的系统是可以预测的。如果要用于加密或者完全相关的功能,则应该使用os模块中的urandom。
random模块中一些重要的函数如下表所示:
函数 |
描述 |
random() |
返回一个0~1(含)的随机实数 |
getrandbits(n) |
以长整数的方式返回n个随机的二进制位 |
uniform(a, b) |
返回一个a~b(含)的随机实数 |
randrange([start], stop, [step]) |
从range(start, stop, step)中随机地选择一个数 |
choice(seq) |
从序列seq中随机地选择一个元素 |
shuffle(seq[, random]) |
就地打乱序列seq |
sample(seq, n) |
从序列seq中随机地选择n个值不同的元素 |
random.random():random模块中最基本的函数之一,也是最常用的函数,它返回一个0~1(包含)的伪随机数。
random.getrandbits():以一个整数的方式返回指定数量的二进制位。
random.uniform():它返回一个a~b(含)的随机(均匀分布的)实数。例如,如果你需要一个随机角度,可使用uniform(0, 360)。
random.randrange():是生成随机整数的标准函数。为指定这个随机整数所在的范围,你可像调用range那样给这个函数提供参数。
random.choice():从给定的序列中随机地选择一个元素。
random.shuffle():随机地打乱一个可变序列中的元素,并确保每种可能的排列顺序出现的概率相同。
random.sample():从给定序列中随机(均匀)地选择指定数量的元素,并确保所选择元素的值各不相同。
上面关于介绍的random模块中的函数的实例用法如下my_random.py程序所示:
my_random.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
# random()函数,返回一个0~1(包含)的随机实数
rand_num = random.random()
print('rand_num = {}'.format(rand_num))
rand_num = random.random()
print('rand_num = {}'.format(rand_num))
# getrandbits()函数
print(random.getrandbits(10))
# uniform()函数,返回一个a~b(包含)的随机实数
uni_rand_num = random.uniform(1, 10)
print('uni_rand_num = {}'.format(uni_rand_num))
# randrange()函数,从指定的范围中随机选择一个数。
rand_range_num = random.randrange(1, 10)
print('rand_range_num = {}'.format(rand_range_num))
# choice()函数,从给定的序列中随机选择一个数,与randrange()函数类似。
sequence = list(range(1, 10))
print('sequence = {}'.format(sequence))
rand_choice = random.choice(sequence)
print('rand_choice = {}'.format(rand_choice))
# shuffle()函数,随机打乱给定的可变序列的元素索引位置
sequence = list(range(1, 20))
print('sequence = {}'.format(sequence))
random.shuffle(sequence)
print('sequence = {}'.format(sequence))
# sample()函数,从给定的序列中随机选择指定数量的元素,各个元素只不同
sequence = list(range(1, 36))
print('sequence = {}'.format(sequence))
samp_rand_nums = random.sample(sequence, 5)
print('samp_rand_nums = {}'.format(samp_rand_nums))
程序执行结果如下所示:
rand_num = 0.4080611438222771
rand_num = 0.4686116506011688
911
uni_rand_num = 8.889564467939781
rand_range_num = 5
sequence = [1, 2, 3, 4, 5, 6, 7, 8, 9]
rand_choice = 8
sequence = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
sequence = [2, 17, 10, 19, 12, 4, 9, 14, 7, 5, 3, 11, 6, 18, 8, 15, 16, 1, 13]
sequence = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
samp_rand_nums = [27, 30, 1, 17, 7]