python如何生成随机数_python 随机字符串

python如何生成随机数_python 随机字符串今天学习了用python生成仿真数据的一些基本方法和技巧,写成博客和大家分享一下。本篇博客主要讲解如何从给定参数的的正态分布/均匀分布中生成随机数以及如何以给定概率从数字列表抽取某数字或从区间列表的某一区间内生成随机数,按照内容将博客分为3部分,并附上代码。1从给定参数的正态分布中生成随机数当考虑从正态分布中生成随机数时,应当首先知道正态分布的均值和方差(标准差),有了这些,就可以调用pytho…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

今天学习了用python生成仿真数据的一些基本方法和技巧,写成博客和大家分享一下。

本篇博客主要讲解如何从给定参数的的正态分布/均匀分布中生成随机数以及如何以给定概率从数字列表抽取某数字或从区间列表的某一区间内生成随机数,按照内容将博客分为3部分,并附上代码。

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 np

import 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 np

import 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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: 详解用python生成随机数的几种方法

本文地址: http://www.cppcns.com/jiaoben/python/267431.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186034.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据库表结构设计方法及原则「建议收藏」

    数据库表结构设计方法及原则「建议收藏」http://www.cnblogs.com/RunForLove/p/5693986.html  数据库设计的三大范式:为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。  在实际开发中最为常见的设计范式有三个:第一范式是最基本的范式。如果数据

    2025年11月7日
    1
  • floor报错注入原理_sql报错注入

    floor报错注入原理_sql报错注入floor()报错注入准确地说应该是floor,count,groupby冲突报错是当这三个函数在特定情况一起使用产生的错误。首先看经典的floor注入语句:andselect1from(selectcount(*),concat(database(),floor(rand(0)*2))xfrominformation_schema.tablesgroupbyx)a)第一眼看…

    2022年9月27日
    3
  • pytest报错_git撤销本地提交

    pytest报错_git撤销本地提交前言我们每天写完自动化用例后都会提交到git仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交git仓库的用例。pytest-picked插件可以

    2022年7月31日
    6
  • Android URLEncoder

    Android URLEncoderbug:发送httpget请求的时出错Causedby:java.lang.IllegalArgumentException:Illegalcharacterinqueryatindex70:….原因:在请求中我用到了不常用的字符,导致调用HttpGet(url)方法时,url参数解析错误解决方法:所以如果法中这种问题,可以在调用下面的方法将参数加密URLEnco

    2022年6月17日
    37
  • 下拉列表框DropDownList绑定Dictionary泛型类

    下拉列表框DropDownList绑定Dictionary泛型类DropDownList绑定Dictionary泛型类定义一个Dictionary泛型类///&lt;summary&gt;   ///产品类型   ///&lt;/summary&gt;   ///&lt;returns&gt;&lt;/returns&gt;   publicDictionary&lt;string,string&gt;productType() …

    2022年10月8日
    3
  • JVM架构和GC垃圾回收机制(JVM面试不用愁)[通俗易懂]

    JVM架构和GC垃圾回收机制(JVM面试不用愁)[通俗易懂]JVM架构和GC垃圾回收机制详解JVM架构图分析下图:参考网络+书籍,如有侵权请见谅(想了解Hadoop内存溢出请看:Hadoop内存溢出(OOM)分类、参数调优化)JVM被分为三个主要的子系统(1)类加载器子系统(2)运行时数据区(3)执行引擎1.类加载器子系统Java的动态类加载功能是由类加载器子系统处理。当它在运行时(不是编译时)首次引用一个类时,它加载、链…

    2022年4月28日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号