random函数汇总

2023-10-28

1. random.random

random.random()用于生成一个0到1之间的随机浮点数:0<=n<1

>>> random.random()
0.7086588033796296

2. random.uniform

random.uniform(a,b)用于生成一个指定范围内的随机浮点数若a<b,则a<=n<=b;若a>b,则b<=n<=a.

>>> random.uniform(12,5)
6.128208009182529

>>> random.uniform(5,12)
5.373996230739382

>>> random.uniform(5,5)
5.0

3. random.randint

random.randint(a,b)用于生成一个指定范围内的整数:a<=n<=b;下限必须小于等于上限值,random.randint(20,10)是错误的

>>> random.randint(10,10)
10

>>> random.randint(10,21)
15

>>> random.randint(100,100)
100

4. random.randrange

random.randrange([start],[stop],[step])从指定范围内,按指定基数递增的集合中获取一个随机数。等于random.choice(range([start],[stop],[step]))

>>> random.randrange(1,100,10)
61

>>> random.randrange(1,100,10)
21

>>> random.choice(range(1,100,10))
71

>>> random.choice(range(1,100,10))
41

>>> random.randrange(100,100)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/random.py", line 199, in randrange
    raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width))
ValueError: empty range for randrange() (100,100, 0)

5. random.choice

random.choice(seq)从序列中获取随机一个元素

choices(population, weights=None, *, cum_weights=None, k=1)这个方法平时比较少用,population是一个可迭代对象,weights是相对权重,cum_weights是累积权重,k表示随机获取的个数。

例如,相对权重``[10, 5, 30, 5]``相当于累积权重``[10, 15, 45, 50]``。 在内部,相对权重在进行选择之前会转换为累积权重,因此提供累积权重可以节省工作量。random官方文档

需要注意2点:

1. weights和cum_weights不能同时使用。

2.population与weights,population与cum_weights需一一对应

>>> random.choice("abcde")
'd'

>>> random.choice([1,2,3,4])
2

>>> random.choice((1.1,2.2,3.3,4.4))
3.3

>>> for i in range(10):
...     print(random.choices("abcd",weights=[1,1,7,1],cum_weights=[70,10,5,15],k=1))
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "E:\Programs\Python36\lib\random.py", line 356, in choices
    raise TypeError('Cannot specify both weights and cumulative weights')
TypeError: Cannot specify both weights and cumulative weights

>>> for i in range(10):
...     print(random.choices(['x','y','z'],cum_weights=[70,10,5,15],k=1))
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "E:\Programs\Python36\lib\random.py", line 358, in choices
    raise ValueError('The number of weights does not match the population')
ValueError: The number of weights does not match the population

>>> for i in range(10):
...     print(random.choices(['x','y','z','u'],cum_weights=[70,10,5],k=1))
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "E:\Programs\Python36\lib\random.py", line 358, in choices
    raise ValueError('The number of weights does not match the population')
ValueError: The number of weights does not match the population

>>> for i in range(10):
...     print(random.choices("abcd",weights=[1,1,7,1],k=1))
...
['b']
['c']
['c']
['c']
['c']
['c']
['a']
['a']
['c']
['c']
由上可以明显发现,随机获得c的概率更高

>>> for i in range(10):
...     print(random.choices(['x','y','z','w'],cum_weights=[70,10,5,15],k=1))
...
['w']
['w']
['w']
['w']
['x']
['x']
['w']
['x']
['x']
['x']

6. random.shuffle

random.shuffle(x[, random])用于将一个列表中的元素打乱

>>> l=['a','b','c','d','e']
>>> random.shuffle(l)
>>> l
['d', 'b', 'e', 'c', 'a']

7. random.sample

random.sample(seq,k)从指定序列中随机获取指定长度的,且不重复出现的片段

>>> l=['a','b','c','d','e']
>>> s=random.sample(l,2)
>>> s
['c', 'a']

>>> l
['a', 'b', 'c', 'd', 'e']

8. random.seed

random.seed(n)用于改变随机数生成器的种子,指定随机数生成时所用的算法

>>> random.seed(2)
>>> random.random()
0.9560342718892494

>>> random.random()
0.9478274870593494

9. 实践

写一个函数:随机生成n个整数,n个整数的和等于m

import random
def random_num(n, m):
    # 随机生成n个数字
    numbers = [random.random() for _ in range(n)]
    # 计算出 m 与 n个随机数的商
    k = m / sum(numbers)
    # n个随机数分别乘以k,n个数的和接近于m
    result = [int(i * k) for i in numbers]
    # 从result中随机选择一个数,加上m与sum(result)的差数,从而实现sum(result) = m
    result[random.randint(0,n-1)] += m - sum(result)
    print("sum(result)=", sum(result))
    print("result=", result)


>>> random_num(5, 100)
sum(result)= 100
result= [5, 21, 15, 33, 26]
>>> random_num(2, 15)
sum(result)= 15
result= [2, 13]
>>>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

random函数汇总 的相关文章

  • ODFPy 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要操作ODF文件格式 开放文档格式 开放办公室的内部格式 我需要用Python来完成 ODFPy
  • Python ImageTk.PhotoImage 使用 alpha 通道缓慢加载 png

    我编写了一个小程序来加载和显示图像 一切正常 直到我到达 示例中的 png 文件 shade png 显示这张小图片需要七七秒 PhotoImage 是否有错误或者我错过了一些 范围 这是我的示例代码 from PIL import Ima
  • 使用 matplotlib 在图像数据之上对线网格进行像素精确定位

    我试图在 python 库 matplotlib 显示的图像网格顶部精确地覆盖 1 像素宽线的网格 不幸的是 我似乎无法对结果进行足够精细的控制 以实现线网格与数据网格的正确对齐 如下面的代码所示 结果似乎总是很接近 但并不完全正确 我尝试
  • swig char ** 作为指向 char * 的指针

    我在使用 swig 和 char 作为指向变量 char 的指针时遇到问题 而不是作为 char 的列表 我找不到将指针包装到 char 的方法 目的是将连接的结果写入指针引用的 char 中 以下是我的代码 文件指针 cpp includ
  • PySerial 和多个 Python 安装出现问题

    我的 Windows 7 计算机上有 Python 2 4 4 和 3 1 3 我想使用 PySerial 听说是内置的 所以我尝试了一下import serial在两个版本中 两者都造成了Import Error 然后我从以下位置下载了w
  • 在python中浏览ftp目录

    我正在尝试使用 ftplib 使用 Python 3 从 ftp 服务器下载多个文件夹 我有一个文件夹名称列表 它们都位于文件夹 root 中 问题是我不知道如何浏览它们 当我使用cwd我可以进入更深的目录 但是如何再次起来呢 我正在尝试得
  • 检查对象是否是字符串列表的列表?

    是什么elegant检查对象是否是字符串列表列表的方法 没有嵌套循环 也许这里必须是构造结构化迭代的常规方法 UPD 像这样的东西 l a b c d 1 3 e 2 f def recurse iterable levels result
  • 在OpenCV Python中编写4通道以上图像

    这对我来说是一个持续的挑战 我正在尝试使用 openCV 将两个 3 RGB 图像组合成一个 6 通道 TIFF 图像 到目前为止我的代码如下 import cv2 import numpy as np im1 cv2 imread im1
  • 类型错误:无法连接“str”和“instance”对象(python urllib)

    写一个python程序 我在使用时遇到了这个错误urllib urlopen功能 Traceback most recent call last File ChurchScraper py line 58 in
  • 如何使用 Tkinter 创建等宽网格列?

    如何强制 Tkinter 应用程序窗口中的列宽度相等 tkdocs网站声明如下 每列的宽度 或每行的高度 取决于列或行中包含的小部件的宽度或高度 这意味着当绘制用户界面并将其划分为行和列时 您无需担心每列或行的宽度相等 或高度 大概 TkD
  • Python 对象初始化错误。或者我误解了对象的工作原理? [复制]

    这个问题在这里已经有答案了 1 import sys 2 3 class dummy object 4 def init self val 5 self val val 6 7 class myobj object 8 def init s
  • 您能否从函数、args 和 kwargs 确定变量将如何分配?

    我有一些样板逻辑 我想包装几个具有相同可选关键字的函数 现在看起来像下面的代码 但是 这仅处理 opt key 作为关键字传递的情况 而不是按位置传递 解决这个问题的一种方法是了解如何解决参数分配 是否有一些元函数接受函数 args 和 k
  • Django:上传前调整图像大小

    我想调整图像大小 Pillow 在上传之前 我在下面编写了代码但不起作用 并得到错误 myapp list 处的属性错误 坚定的 请求方式 POST 请求网址 http 127 0 0 1 8000 myapp list http 127
  • Anaconda (Python) - Windows 10 上的 Cmder 集成

    我在 Windows 10 64 位上通过 Anaconda 让 Cmder 使用 Python 时遇到了一些麻烦 我让 Anaconda 工作得很好 测试过用 matplotlib 绘制一些东西 它与 Anaconda Prompt 一起
  • Python 中的“finally”总是执行吗?

    对于Python中任何可能的try finally块 是否保证finally块总是会被执行吗 例如 假设我在except block try 1 0 except ZeroDivisionError return finally print
  • python 中的优化标准化

    在优化过程中 对输入参数进行归一化 使它们处于同一数量级 通常会很有帮助 这样收敛效果会更好 例如 如果我们想要最小化 f x 而合理的近似值是 x0 1e3 1e 4 则将 x0 0 和 x0 1 归一化到大约相同的数量级可能会有所帮助
  • Python:如何访问 Lotus Notes 8.5 Inbox 来阅读电子邮件

    我想用 python 创建一个脚本 从 Lotus Notes 8 5 读取电子邮件 然后在 jira 中为每封电子邮件创建一个问题 但当我尝试从 Lotus 读取邮件时 它会返回此错误 Traceback most recent call
  • 通过 Tweepy 在 Twitter 上更新状态时的回溯

    我一直在尝试使用 Twitter 在 Twitter 上发布我的 Rpi 读数tweepy 但首先我想检查一下是否tweepy本来可以正常工作 但事实并非如此 我正确安装了软件包 但是当我尝试运行简单的代码来发布某些内容时 出现错误 是的
  • 带有 graphviz_layout 的水平树

    在Python中 使用networkx 我可以用以下方法绘制垂直树 g nx balanced tree 2 4 pos nx graphviz layout g prog dot nx draw g pos labels b all no
  • 如果我更改当前工作目录,为什么 __file__ 会变成无效路径?

    执行中test py from tmp import os print os path abspath file os chdir var print os path abspath file output tmp test py var

随机推荐

  • C++中的虚函数表介绍

    在C 语言中 当我们使用基类的引用或指针调用一个虚成员函数时会执行动态绑定 因为我们直到运行时才能知道到底调用了哪个版本的虚函数 所以所有虚函数都必须有定义 通常情况下 如果我们不使用某个函数 则无须为该函数提供定义 但是我们必须为每一个虚
  • 几种不同的推荐引擎比较

    以前也用了一些推荐算法写过一些应用 最近用上了网易云音乐 于是便想写篇推荐引擎的文章 一 推荐引擎 主动发现用户当前或潜在需求 并主动推送信息给用户的信息网络 挖掘用户的喜好和需求 主动向用户推荐其感兴趣或者需要的对象 二 推荐引擎的分类
  • Allegro学习笔记---2.新建PCB+导入网表+元器件快速导入PCB

    一 前期准备 1 将需要用到的PCB封装库和焊盘库准备好 如下图 一般是将 dra psm pad文件都放到同一个文件夹A下面 dra 可编辑的pcb封装文件 psm 被调用的pcb封装文件 不可编辑 pad 焊盘文件 2 先用orcad
  • 如何修改AD中PCB背景黑色域的大小

    方法 1 先将pcb选在keep out layer层 2 用线命令画出一个封闭的区域 得封闭 线命令就是line 选择多条封闭区域可用shift键 3 选中如图上个命令就可以 操作过程可能遇到的问题 遇到这个问题是因为 封闭区域没有全选中
  • Tecplot绘制流体后处理图的问题

    使用的软件为Tecplot Chorus 2017 R3 来处理Fluent17 0的流体仿真数据 看了点击打开链接的官方文档 一直没有搞清楚什么样的格式可以像他给出的一样做多组数据的对比 一开始导入fluent计算产生的data文件 发现
  • 全国计算机等级考试C语言(未来教育平台)

    未来教育 全国计算机等级考试 qq com https mp weixin qq com s biz MzkyNjQwODc2MA mid 2247483676 idx 1 sn 96daf350e5cb0542bbab621cbc8434
  • 步步为营 .NET 代码重构学习笔记 六、移动函数和移动值域(Move Method And Move Field)...

    Move Method 概述 程序中 有个函数与其所驻class之外的另一个class进行更多交流 调用后者或被后者调用 动机 Motivation 如果一个class有太多行为 或如果一个class与另一个class有太多合作而形成高度耦
  • 时间全局过滤器 vue 用法

    min js 定义一个全局过滤器 Vue filter dataFormat function input pattern var dt new Date input 获取年月日 var y dt getFullYear var m dt
  • 将python项目用docker 部署到服务器上的全过程

    任务描述 由于笔记本算力有限 要将python项目部署到服务器上 在查阅了大量资料后 踩了无数坑后 今天记录一下全过程 希望对大家有帮助 配置要求 需要部署的python项目 虚拟机 linus docker安装 服务器端口 大致流程 1
  • 自动驾驶中无迹卡尔曼滤波器的应用(Unscented-Kalman-Filter)

    无迹卡尔曼滤波 一 无迹卡尔曼滤波器 二 CTRV模型 2 1 状态向量 2 2 状态转移方程计算 2 2 1 确定部分 2 2 2 噪声 三 无迹卡尔曼滤波器 3 1 无迹卡尔曼滤波思路 3 2 sigma点 3 3 无迹卡尔曼滤波器的实
  • python 读取图片名并写入excel

    参考博客python实现将数据写入Excel文件中 前端技术的博客 CSDN博客 python写excel 代码 path img path import os import xlwt import xlsxwriter worksheet
  • postgresql 查询所有表名

    SELECT tablename FROM pg tables WHERE tablename NOT LIKE pg AND tablename NOT LIKE sql ORDER BY tablename 或 select table
  • 面试题——1

    3 无重复字符的最长子串 206 反转链表 215 数组中的第K个最大元素
  • ValueError: Input 0 of layer sequential is incompatible with the layer: : expected min_ndim=4, found

    最近在做猫狗二分类实验的时候 在网上找到了教程 然后跟着教程打代码发现最后出现了ValueError Input 0 of layer sequential is incompatible with the layer expected m
  • Java访问权限修饰符

    private 私有的 只有在同一个类才能访问 内部类 成员变量 方法 default friendly 默认的 同一个包中可以访问 其他包中不能访问 类 成员变量 方法 接口 protected 受保护的 同一个包中可以访问 不同的包需要
  • KubeSphere 部署安装

    使用 kubeadm 搭建的 Kubernetes 1 15 2 版本集群 Helm v2 12 2 版本 使用 NFS 作为集群存储后端 下载安装脚本 mkdir root kubeSphere cd root kubeSphere gi
  • Git仓库完全迁移,包括所有的分支和标签,当然也包括日志。

    度娘了一堆git仓库迁移的内容 一个个都比较麻烦 而且本地下了代码 还要删去库地址 再切换到新库的地址上传 一般这种操作都只是master分支 其他分支还要一个一个来 后来在51CTO上找了一个文章 简单明了 一下就全搞定了 包括所有的分支
  • 二进制安装Docker

    下载 安装 wget https download docker com linux static stable x86 64 docker 19 03 6 tgz tar zvxf docker 19 03 6 tgz 把文件copy到
  • 计算机常用控温算法,常用温度控制方法原理 -解决方案-华强电子网

    常用PID调节器 温控仪控制算法包括常规PID 模糊控制 神经网络 Fuzzy PID 神经网络PID 模糊神经网络 遗传PID及广义预测等算法 常规PID控制易于建立线性温度控制系统被控对象模型 模糊控制基于规则库 并以绝对或增量形式给出
  • random函数汇总

    1 random random random random 用于生成一个0到1之间的随机浮点数 0 lt n lt 1 gt gt gt random random 0 7086588033796296 2 random uniform r