#模块 random
#1. 该模块需要d导入
import random
# random.random() 无参数,生成[0,1)的随机浮点数. 小数点后16位. 不含1 含0
num = random.random()
print(num)
#random.randint(a,b) 两个参数, 必须是b>a,且必须是整形. 生成[a,b]范围内的整数
num1 = random.randint(1, 3)
print(num1)
#random.uniform(a,b) 两个参数. 生成[a,b]内的浮点数. 16位. a<b a>b 都可以. 含a 含b
num2 = random.uniform(22.2, 3)
print(num2)
#random.rangrange(start,stop,step) 3个参数,都需为int类型. stop必传. start不传默认1开始. step不传默认为1
#含义:从开始值到结束值,步长为step的等差数列中,随机取一个数. 含开始值,不含结束值. 因为range()就是不含结束
num3 = random.randrange(1, 3)
print(num3)
##range([start],stop[,step]) 3个参数. stop必穿. start默认0,step默认1.
num4 = range(3)
print(type(num4)) #结果:<class 'range'>
print(num4) #结果: range(0,3) 说明:1. 3是stop的值. start未传时,默认从0开始,step默认是1
#说明2:range()返回一个对象.不是list. 如果想看range()中有哪些数,需要转化为list查看
num5 = range(0, 20, 5) #返回从0开始不含20 能被5整除的 对象. 如要包含20,则stop设为21
print(list(num5)) #结果:[0, 5, 10, 15] .
num6 = range(20, 0, -5) #结果:[20, 15, 10, 5] 20开始,加步长-5,为15. 不含0
print(list(num6))
#从0-100中随机取一个奇数
print(random.randrange(1, 100, 2))
print(list(range(1, 100, 2)))
#从0-100中随机取一个偶数
print(random.randrange(0, 101, 2))
print(list(range(0, 101, 2))) #这里认为0也是偶数
#random.choice(seq) seq:可以是字符串,列表,元组,对象 .不能是字典.字典报错
print(random.choice("python"))#返回随机字符
####只能有一个参数. 这个参数可以是一个对象. 参数range()就是对象
print(random.choice(range(0, 100)))
print(random.choice([23, "lr", 89.0]))
#random.shuffle(list).
#参数:参数是列表/ 作用:将列表中元素随机排序.即打乱.返回none
list = [2, 56, 1.2, "LR", "python"]
print(random.shuffle(list)) #结果:none
#想要查看打乱后的list.
random.seed(10)
print(list)
#random.seed([x]) .随机数种子. 在调用随机函数之前调用该函数.
#x 不传时,默认一个seed值. X可以是任意一个数字,x设置值后,使用random函数会生成同一个随机数
random.seed("wq")
print(random.random())
random.seed("wq")
print(random.random()) #两次生成的随机数相同.
#使用seed值后,可以生成同一个打乱后的list
random.seed(10)
random.shuffle([list])
print(list) #本处和50行打印结果相同
print(round(1.1))