2020-7-7 13:47:27 | 作者:老铁SEO | 0个评论 | 人浏览
1从给定参数的正态分布中生成随机数
当考虑从正态分布中生成随机数时,应当首先知道正态分布的均值和方差(标准差),有了这些,就可以调用python中现有的模块和函数来生成随机数了。这里调用了Numpy模块中的random.normal函数,由于逻辑非参简单,所有直接贴上代码如下:
importnumpyasnp#定义从正态分布中获取随机数的函数defget_normal_random_number(loc,scale):""":paramloc:正态分布的均值:paramscale:正态分布的标准差:return:从正态分布中产生的随机数"""#正态分布中的随机数生成number=np.random.normal(loc=loc,scale=scale)#返回值returnnumber#主模块if__name__=="__main__":#函数调用n=get_normal_random_number(loc=2,scale=2)#打印结果print(n)#结果:3.275192443463058
2从给定参数的均匀分布中获取随机数的函数
考虑从均匀分布中获取随机数的时候,要事先知道均匀分布的下界和上界,然后调用Numpy模块的random.uniform函数生成随机数。
importnumpyasnp#定义从均匀分布中获取随机数的函数defget_uniform_random_number(low,high):""":paramlow:均匀分布的下界:paramhigh:均匀分布的上界:return:从均匀分布中产生的随机数"""#均匀分布的随机数生成number=np.random.uniform(low,high)#返回值returnnumber#主模块if__name__=="__main__":#函数调用n=get_uniform_random_number(low=2,high=4)#打印结果print(n)#结果:2.4462417140153114
3按照指定概率生成随机数
有时候我们需要按照指定的概率生成随机数,比如已知盒子中每种颜色的球的比例,猜测下一次取出的球的颜色。在这里介绍的问题和上面的例子相似,要求给定一个概率列表,从列表对应的数字列表或区间列表中生成随机数,分两部分讨论。
3.1按照指定概率从数字列表中随机抽取数字
假设给定一个数字列表和一个与之对应的概率列表,两个列表对应位置的元素组成的元组即表示该数字在数字列表中以多大的概率出现,那么如何根据这些已知条件从数字列表中按概率抽取随机数呢?在这里我们考虑用均匀分布来模拟概率,代码如下:
importnumpyasnpimportrandom#定义从均匀分布中获取随机数的函数defget_uniform_random_number(low,high):""":paramlow:均匀分布的下界:paramhigh:均匀分布的上界:return:从均匀分布中产生的随机数"""#均匀分布的随机数生成number=np.random.uniform(low,high)#返回值returnnumber#定义从一个数字列表中以一定的概率取出对应区间中数字的函数defget_number_by_pro(number_list,pro_list):""":paramnumber_list:数字列表:parampro_list:数字对应的概率列表:return:按概率从数字列表中抽取的数字"""#用均匀分布中的样本值来模拟概率x=random.uniform(0,1)#累积概率cum_pro=0.0#将可迭代对象打包成元组列表fornumber,number_proinzip(number_list,pro_list):cum_pro+=number_proifx<cum_pro:#返回值returnnumber#主模块if__name__=="__main__":#数字列表num_list=[1,2,3,4,5]#对应的概率列表pr_list=[0.1,0.3,0.1,0.4,0.1]#函数调用n=get_number_by_pro(number_list=num_list,pro_list=pr_list)#打印结果print(n)#结果:1
3.2按照指定概率从区间列表中的某个区间内生成随机数
给定一个区间列表和一个与之对应的概率列表,两个列表相应位置的元素组成的元组即表示某数字出现在某区间内的概率是多少,已知这些,我们如何生成随机数呢?这里我们通过两次使用均匀分布达到目的,代码如下:
importnumpyasnpimportrandom#定义从均匀分布中获取随机数的函数defget_uniform_random_number(low,high):""":paramlow:均匀分布的下界:paramhigh:均匀分布的上界:return:从均匀分布中产生的随机数"""#均匀分布的随机数生成number=np.random.uniform(low,high)#返回值returnnumber#定义从一个数字列表中以一定的概率取出对应区间中数字的函数defget_number_by_pro(number_list,pro_list):""":paramnumber_list:数字列表:parampro_list:数字对应的概率列表:return:按概率从数字列表中抽取的数字"""#用均匀分布中的样本值来模拟概率x=random.uniform(0,1)#累积概率cum_pro=0.0#将可迭代对象打包成元组列表fornumber,number_proinzip(number_list,pro_list):cum_pro+=number_proifx<cum_pro:#从区间[number.number-1]上随机抽取一个值num=get_uniform_random_number(number,number-1)#返回值returnnum#主模块if__name__=="__main__":#数字列表num_list=[1,2,3,4,5]#对应的概率列表pr_list=[0.1,0.3,0.1,0.4,0.1]#函数调用n=get_number_by_pro(number_list=num_list,pro_list=pr_list)#打印结果print(n)#结果:3.49683787011193
python里面如何生成随机数?
random模块
随机整数:random.randint(a,b):返回随机整数x,a<=x<=b
random.randrange(start,stop,[,step]):返回一个范围在(start,stop,step)之间的随机整数,不包括结束值。
随机实数:random.random():返回0到1之间的浮点数
random.uniform(a,b):返回指定范围内的浮点数。
python怎么从集合中随机数
使用random()函数,或者:
choice(seq)从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
randrange([start,]stop[,step])从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1
random()随机生成下一个实数,它在[0,1)范围内。
seed([x])改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst)将序列的所有元素随机排序
uniform(x,y)随机生成下一个实数,它在[x,y]范围内。
python用什么函数产生随机数
在python中用于生成随机数的模块是random,在使用前需要import
random.random:
random.random():生成一个0-1之间的随机浮点数.例:
[python]viewplaincopy
importrandom
printrandom.random()
#0.87594424128
random.uniform
random.uniform(a,b):生成[a,b]之间的浮点数.例:
[python]viewplaincopy
importrandom
printrandom.uniform(0,10)
#5.27462570463
random.ranint
random.randint(a,b):生成[a,b]之间的整数.例:
[python]viewplaincopy
importrandom
printrandom.randint(0,10)
#8
random.randrange
random.randrange(a,b,step):在指定的集合[a,b)中,以step为基数随机取一个数.如random.randrange(0,20,2),相当于从[0,2,4,6,...,18]中随机取一个.例:
[python]viewplaincopy
importrandom
printrandom.randrange(0,20,2)
#14