random 模块介绍
random() 方法返回随机生成的一个实数,该数的范围为[0, 1)
语法如下:
import random
random.random()
需要注意的是random()是不能访问的,需要导入random模块,然后通过random静态对象调用该方法
import random
print("生成第一个随机数:%f" % random.random())
print("生成第二个随机数:%f" % random.random())
执行结果示例
D:\python\python.exe D:/Teaching_Project/py_progress/random_topic.py
生成第一个随机数:0.649431
生成第二个随机数:0.827456
Process finished with exit code 0
在random模块中还有很多其他的随机数方法,依次介绍如下:
-random.sample()
-random.randint()
-random.randrange()
-random.uniform()
-random.shuffle()
-random.choice()
random.sample():从指定的序列或者列表中,随机的选取n个字符或者元素
random_sample_str = "So dim, so dark. So dense, so dull. So damp, so dank, so dead."
random_sample_list = ["So dim", "so dark", "So dense", "so dull", "So damp", "so dank", "so dead"]
print(random.sample(random_sample_str, 10))
print(random.sample(random_sample_list, 2))
执行结果示例:
['.', 'd', 'd', 'a', 'r', ' ', 'm', '.', 'd', 's']
['So damp', 'So dense']
random.randint():随机整数,包含上下限
rand_int = random.randint(1, 2000)
print("我是一个随机整数:%d" % rand_int)
random.randrange(0, 101, 2):随机生成一个0-100之间的偶数
print(random.randrange(0, 101, 2))
print(random.randrange(1, 1001, 3)) # 参数为区间边界(左闭右开)、步长,start,stop,step
random.uniform(u, sigma): 指定范围内的随机浮点数
print(random.uniform(1, 100))
print(random.uniform(1, 100))
random.seed(int): 在伺服的情况下生成一个随机数
-给随机数对象一个种子值,用于产生随机序列。
-对于同一个种子值的输入,之后产生的随机数序列也一样。
-通常是把时间秒数等变化值作为种子值,达到每次运行产生的随机系列都不一样
-seed() 省略参数,意味着使用当前系统时间生成随机数
-这个方法的使用主要场景是为了保证生成的随机数依然具有唯一性,例如当我们将时间戳传入时
random.seed(99)
print(random.random())
random.seed(99)
print(random.random())
random.seed(88)
print(random.random())
print(random.random())
random.choice(): 随机元素,参数可以使字符串、列表、元组
print(random.choice("2345678910JQKAwW"))
print(random.choice("鹅鹅鹅,曲项向天歌,白毛浮绿水,红掌拨清波"))
print(random.choice([1, 2, 3]))
print(random.choice(("J", "Q", "K")))
使用案例
多个字符中选取指定数量的字符组成新字符串:
print(''.join(random.sample(
['z', 'y', 'x', 'w', 'v', 'u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd',
'c', 'b', 'a'], 8)))
print(''.join(random.sample(
['z', 'y', 'x', 'w', 'v', 'u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd',
'c', 'b', 'a'], 8)))
洗扑克牌的案例:
pukepai_list = [2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", "w", "W", 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K",
"A", "w", "W", 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", "w", "W", 2, 3, 4, 5, 6, 7, 8, 9, 10,
"J", "Q", "K", "A", "w", "W"]
print(pukepai_list)
random.shuffle(pukepai_list)
print(pukepai_list)
下面这种写法无意义,应为shuffle没有返回序列对象,而是直接将内存中元素的序列顺序打乱:
pukepai_list_new = random.shuffle(pukepai_list)
print(pukepai_list_new)