random库

random模块实现了各种分布的伪随机数生成器,为什么称为伪随机数:即使人类使用算法等方式,以一个基准(也被叫做种子,最常用的就是时间戳)来构造一系列数字,这些数字的特控符合人们所理解的随机数。但因为是通过算法得到的,所以一旦算法和种子都确定,那么产生的随机数序列也是确定的,所以叫伪随机数

常用函数

random.seed(a)

设置初始化随机种子,可输出相同随机数序列;a取整数或浮点数,不设置时默认以系统时间为种子。

1
2
3
4
5
6
7
8
9
10
11
import random
print("没有设置种子时")
for i in range(5):
ret = random.randint(1, 10)
print(ret, end=" ")
print()
print("设置种子时")
random.seed(1)
for i in range(5):
ret = random.randint(1, 10)
print(ret, end=" ")

没有显示设定种子时,每次输出的随机数都是不一样的;显示设置种子时,每次输出的随机数都是一样的。

random.random() # 用于生成一个0.0到1.0的随机数
print(random.random())

random.uniform(a, b) # 生成一个[a, b]之间的随机小数;a,b取整数或浮点数

print(random.uniform(10, 20))

random.randint(a, b) # 生成一个[a, b]之间随机整数

print(random.randint(10, 20))

random.randrange(start, stop, [step])

#生成一个[start, stop]之间以step步数的随机整数:start,stop,step取整数,step不设置时默认值为1

1
2
3
4
5
print(random.randrange(1, 100))  # 随机生成1-100之间的整数

print(random.randrange(1, 100, 2)) # 随机生成1-100之间奇数

print(random.randrange(2, 100, 2)) # 随机生成1-100之间偶数

random.getrandbits(k) # 生成一个占内存k位以内的随机整数;k取长度的整数值

print(random.getrandbits(10))
生成一个内存占k位以内的随机数;k取长度的整数值

random.choice(seq) # 从序列类型seq中随机返回一个元素;seq取序列类型:如字符串、列表、元组
print(random.choice([1, ‘10’, 3, 5, 7, 1001]))

random.shuffle(seq)
将序列类型中元素随机排序,返回打乱后序列,seq被改变(改变原序列),shuffle为洗牌之意;seq取序列类型:如字符串,列表,元组

1
2
3
list = ['a', 'b', 'c', 'd', 'e', 'f']
random.shuffle(list)
print(list)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def get_random_string(length):
# 随机生成字母和数字的位数
num_count = random.randint(1, length-1)
letter_count = length-num_count
# 随机抽样生成数字序列
num_list = [random.choice(string.digits) for _ in range(num_count)]
# 随机抽样生成字母序列
letter_list = [random.choice(string.ascii_letters) for _ in range(letter_count)]
# 合并字母和数字
all_list = num_list + letter_list
# 乱序
random.shuffle(all_list)
result = "".join(i for i in all_list)
return result
# 生成10位的密码
password1 = get_random_string(10)
print(password1)

可以使用这种调用其的方式、

1
2
3
4
5
6
7
8
9
10
//创建随机数对象
Random random = new Random();

//随机产生一个int类型取值范围内的数字。
int num1 = random.nextInt();
System.out.println(num1);

//产生一个[0-100]之间的随机数
int num2 = random.nextInt(101);
System.out.println(num2);//不包括101