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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • spidermonkeys_monkeymonkey

    spidermonkeys_monkeymonkey和其他的JavaScript引擎一样,SpiderMonkey不直接提供像DOM这样的对象,而是提供解析,执行JavaSccript代码,垃圾回收等机制。SpidlerMonkey是一个在Mozilla之下的开源项目,要使用SpiderMonkey,需要下载其源码,然后编译为静态/动态库使用。要在自己的应用程序中使用SpiderMonkey,首先需要了解以下三个核心

    2022年10月17日
  • leetcode 792_单词编码

    leetcode 792_单词编码给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例 1:输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”输出:true示例 2:输

  • 遗传算法原理及算法实例分析_遗传算法案例分析

    遗传算法原理及算法实例分析_遗传算法案例分析遗传算法原理解析遗传算法(GA)是一种元启发式自然选择的过程,属于进化算法(EA)大类。遗传算法通常是利用生物启发算子,如变异、交叉和选择来生成高质量的优化和搜索问题的解决方案。借鉴生物进化理论,遗传算法将问题模拟成一个生物进化过程,通过复制、交叉、突变等操作产生下一代的解,并逐步淘汰适应度函数值低的解,增加适应度函数高的解。这样进化N代后就很有可能会进化出适应度函数值很高的个体。

  • hive 异常值_could not instantiate bean class

    hive 异常值_could not instantiate bean classhive升级过程中异常记录-java.lang.ClassCastException:org.apache.hadoop.hive.ql.io.orc.OrcStructcannotbecasttoorg.apache.hadoop.io.BinaryComparable常规ClassCastException问题梳理-来源网络Causedby:java.lang.ClassCastException:org.apache.hadoop.io.Textcannotbecastt

  • javascript高级程序设计第四版pdf下载_javascript高级程序设计第四版

    javascript高级程序设计第四版pdf下载_javascript高级程序设计第四版分享关于JavaScript高级程序设计(第3版)[美]NicholasC.Zakas著李松峰曹力译一书供大家学习!!!链接:https://pan.baidu.com/s/1RD4EXuQnTqH3kUfHWFaOYw提取码:vias复制这段内容后打开百度网盘手机App,操作更方便哦…

  • windows下CMD常用命令[通俗易懂]

    windows下CMD常用命令[通俗易懂]作为一个开发者,我们用的最多的就是windows,但是对于cmd,我不知道大家熟不熟,反正我是一直不怎么熟悉。平时操作linux比较多,反而忽视了cmd相关命令,这里大致总结一些常用的命令,作为记录。一、常用命令1、进入某个盘//进入d盘D://进入F盘F:这里我经常弄混,老是用cd命令,结果回回进不去。。Linux和windows果然不一样。2、查看目录文件//查看当前目录下的文件,类似于l

发表回复

您的电子邮箱地址不会被公开。

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