一、python系统自带的random
import random
a=random.randint(1,10) #在a,b之间随机产生一个正数
c=random.randrange(1,10) #产生啊,b之间的随机正数
b=random.random() #产生0,1之间的随机浮点数
d=random.uniform(1,10) #产生a,b之间的随机浮点数
lst=[1,2,3,4,5,6,7,8]
e=random.choice(lst) #在给定的序列中随机选择一个
f=random.shuffle(lst) #将一个序列随机打乱
lst1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
slice = random.sample(lst1, 5) #从list中随机获取5个元素,作为一个片断返回
print(slice)
print(a,b,c,d,e)
print(lst)
# number=0
# while(number<6):
# random.seed(100)
# print(random.uniform(10,20))
# number+=1
# random.seed(11)
# print(random.uniform(10,20))
# random.seed(12)
# print(random.uniform(10,20))
# random.seed(13)
# print(random.uniform(10,20))
# random.seed(14)
# print(random.uniform(10,20))
# random.seed(15)
# print(random.uniform(10,20))
"""seed( ) 用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed( )值,
则每次生成的随即数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,
此时每次生成的随机数因时间差异而不同。
但是注意一个问题:random.seed(something)只能是一次有效。
即每次后面的随机数只一次,
其实仔细想想也很自然,如果不是一次有效,比如说是一直有效,那岂不是会影响到后续的代码中随机数的选取?
"""
#下面是一些比较常见的产生符合某种分布的随机数
m=random.normalvariate(5,1) #5是期望,1是标准差
print(m)
random.betavariate(alpha=1,beta=2) #beta分布
random.expovariate() #exponential 指数分布
random.gammavariate() #gamma 分布
random.gauss() # 高斯分布
random.lognormvariate() #log normal 分布
random.normalvariate() #正态分布
random.paretovariate() #pereto 分布
二、numpy的随机数
a=random.rand(2,3) #产生0,1之间的随机浮点数
print(a)
d=random.random(size=(2,3)) #产生0,1之间的随机浮点数
print(d)
b=random.randint(1,10,size=(2,3)) #产生指定范围之间的随机正数
print(b)
c=random.randn(2,3) #产生的是“标准”正态分布,即高斯分布
print(c)
e=random.normal(scale=3,size=(2,3)) #产生一般的正态分布
numpy.random.shuffle(sequence) #随机打乱序列
numpy.random.choice() #随机选取序列的一个元素,只选取一个元素
numpy.random.binomial() #二项分布采样
numpy.random.RandomState() #指定种子值
numpy.random.seed() #指定种子值,同上面是一样的
"""numpy里面也提供了产生各种分布的随机数函数,这里就不
一一列举
"""
三、区别
主要的区别是numpy.random模块里面提供的函数种类更多,而且大部分是以产生“ 数组对象 ”的,即可以指定size,而random模块因为是系统自带的,大多只是产生一个数。