用python生成随机数的几种方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python生成随机数的几种方法相关的知识,希望对你有一定的参考价值。

1 从给定参数的正态分布中生成随机数
当考虑从正态分布中生成随机数时,应当首先知道正态分布的均值和方差(标准差),有了这些,就可以调用python中现有的模块和函数来生成随机数了。这里调用了Numpy模块中的random.normal函数,由于逻辑非参简单,所有直接贴上代码如下:
import numpy as np# 定义从正态分布中获取随机数的函数def get_normal_random_number(loc, scale): """ :param loc: 正态分布的均值 :param scale: 正态分布的标准差 :return:从正态分布中产生的随机数 """ # 正态分布中的随机数生成 number = np.random.normal(loc=loc, scale=scale) # 返回值 return number# 主模块if __name__ == "__main__": # 函数调用 n = get_normal_random_number(loc=2, scale=2) # 打印结果 print(n) # 结果:3.275192443463058

2 从给定参数的均匀分布中获取随机数的函数
考虑从均匀分布中获取随机数的时候,要事先知道均匀分布的下界和上界,然后调用Numpy模块的random.uniform函数生成随机数。
import numpy as np# 定义从均匀分布中获取随机数的函数def get_uniform_random_number(low, high): """ :param low: 均匀分布的下界 :param high: 均匀分布的上界 :return: 从均匀分布中产生的随机数 """ # 均匀分布的随机数生成 number = np.random.uniform(low, high) # 返回值 return number# 主模块if __name__ == "__main__": # 函数调用 n = get_uniform_random_number(low=2, high=4) # 打印结果 print(n) # 结果:2.4462417140153114

3 按照指定概率生成随机数
有时候我们需要按照指定的概率生成随机数,比如已知盒子中每种颜色的球的比例,猜测下一次取出的球的颜色。在这里介绍的问题和上面的例子相似,要求给定一个概率列表,从列表对应的数字列表或区间列表中生成随机数,分两部分讨论。
3.1 按照指定概率从数字列表中随机抽取数字
假设给定一个数字列表和一个与之对应的概率列表,两个列表对应位置的元素组成的元组即表示该数字在数字列表中以多大的概率出现,那么如何根据这些已知条件从数字列表中按概率抽取随机数呢?在这里我们考虑用均匀分布来模拟概率,代码如下:
import numpy as npimport random# 定义从均匀分布中获取随机数的函数def get_uniform_random_number(low, high): """ :param low: 均匀分布的下界 :param high: 均匀分布的上界 :return: 从均匀分布中产生的随机数 """ # 均匀分布的随机数生成 number = np.random.uniform(low, high) # 返回值 return number# 定义从一个数字列表中以一定的概率取出对应区间中数字的函数def get_number_by_pro(number_list, pro_list): """ :param number_list:数字列表 :param pro_list:数字对应的概率列表 :return:按概率从数字列表中抽取的数字 """ # 用均匀分布中的样本值来模拟概率 x = random.uniform(0, 1) # 累积概率 cum_pro = 0.0 # 将可迭代对象打包成元组列表 for number, number_pro in zip(number_list, pro_list): cum_pro += number_pro if x < cum_pro: # 返回值 return number# 主模块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 按照指定概率从区间列表中的某个区间内生成随机数
给定一个区间列表和一个与之对应的概率列表,两个列表相应位置的元素组成的元组即表示某数字出现在某区间内的概率是多少,已知这些,我们如何生成随机数呢?这里我们通过两次使用均匀分布达到目的,代码如下:
import numpy as npimport random# 定义从均匀分布中获取随机数的函数def get_uniform_random_number(low, high): """ :param low: 均匀分布的下界 :param high: 均匀分布的上界 :return: 从均匀分布中产生的随机数 """ # 均匀分布的随机数生成 number = np.random.uniform(low, high) # 返回值 return number# 定义从一个数字列表中以一定的概率取出对应区间中数字的函数def get_number_by_pro(number_list, pro_list): """ :param number_list:数字列表 :param pro_list:数字对应的概率列表 :return:按概率从数字列表中抽取的数字 """ # 用均匀分布中的样本值来模拟概率 x = random.uniform(0, 1) # 累积概率 cum_pro = 0.0 # 将可迭代对象打包成元组列表 for number, number_pro in zip(number_list, pro_list): cum_pro += number_pro if x < cum_pro: # 从区间[number. number - 1]上随机抽取一个值 num = get_uniform_random_number(number, number - 1) # 返回值 return num# 主模块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
参考技术A random模块

jmeter参数化的几种方法

参考技术A 取值规则:

    1.单线程,多次循环,只会取用户_1的值

    2.多个线程,单次循环,每个线程取一个用户的值,如果线程数超出用户数,会循环从第一个会继续取值

    3.多个线程,多次循环,每个线程的取值同上,单个线程多次循环取值相同。

     选中线程组,点击右键,添加-配置元件-CSV Data Set Config

    注:每一次单独运行调用都要从文件的第一组数据开始

     步骤:

        1.选择要读取的本地文件路径

        2,设置字符编码(一般就是UTF-8)

        3,设置变量名称(与本地文件的列对应,一列为一个变量)

        4,规定分隔符(与本地文件中分隔符保持一致,一般用“,”)

     其他选项解释:

        1、Ignore fist line(。。。):当文件第一行为变量名是是否忽略

       2、ecycle on EOF?:是否循环读取参数文件内容。默认设置为 true。通常在线程组的线程数 * 线程组的循环          次数      > 参数文件行数时,才需要将此项设置为 true。

        3、Sotp thread on EOF?:当读取到参数文件末尾时,是否停止读取线程。默认为 false。当 Recycle on         EOF?     设置为 true 时,此项不起任何作用。

注:每次调用都会生成新的值

     步骤:

        1、2唤出函数对话框

        3、选择_CSVRead

        4、填写本地文件路径

        5、填写读取文件的第几列(从0开始)

        6、生成函数和函数取值结果

        7、核对结果是否正确

        8、复制函数使用

     步骤:

        1、选择_Random

        2、填写随机数范围的最小值

        3、填写随机数范围的最大值

        4、生成函数(5)和函数取值结果(6)

        5、复制函数在需要的地方使用

        6、核对结果是否正确

     步骤:

        1、选择_RandomString

        2、填写需要生成字符串的长度

        3、填写字符串生成的字符范围

        4、生成函数和函数取值结果

        5、复制函数使用

        6、核对结果是否正确

以上是关于用python生成随机数的几种方法的主要内容,如果未能解决你的问题,请参考以下文章

PHP生成随机数的几种方法

知识积累随机数生成的几种方法

C# 取指定范围随机数的几种方法

shell生成随机数的几种方法

unix下生成随机复杂密码的几种方法

java获取随机数的几种方法