Python中的random函数

2023-11-15

显示

显示结果:random模块实现了各种分布的伪随机数生成器。

伪随机数:人类使用算法等方式,以一个基准(也被称为种子,常用的是时间戳)来构造一系列数字,这些数字的特性符合人们所理解的随机数。
一旦算法和种子都确定,产生的随机数序列也是确定的,所以称为伪随机数。

1. 常用函数

常用函数 说明

random.seed(a) 设置初始化随机种子,可输出相同随机数序列;a取整数或浮点数,不设置时默认以系统时间为种子
random.random() 生成一个0.0到1.0之间的随机浮点数

random.uniform(a,b) 生成一个[a,b]之间的随机小数,a,b取整数或浮点数
random.randint(a,b) 生成一个[a,b]之间的随机整数

random.randrange(start,stop[,step]) 生成一个[start,stop)之间以step为步数的随机整数;start,stop,step都是整数,step不设置默认为1

random.getrandbits(k)(seq) 生成一个占内存k位以内的随机整数;k取长度的整数值,如果设置k=2,那么可取的数就在 (0,1,2,3) 之间随机取

random.choice(seq) 从序列类型seq中随机返回一个元素;seq是序列类型,如:字符串、列表、元组、集合等
random.shuffle(seq) 将序列类型中元素随机排序,返回打乱后的序列,seq被改变(改变原列表);seq是序列类型,如:字符串、列表、元组等

random.sample(pop,k) 从pop中选取k个元素,以列表类型返回(不改变原列表);pop是序列类型,k是整数表示取k个数

常用函数使用方法:

import random

print('no seed')
for i in range(5):
    ret = random.randint(1,10)
    print(ret)

print()

print(random.random())
print(random.uniform(1,10))
print(random.randint(0,10))
print(random.randrange(1,10,5))
print(random.getrandbits(2))

print(random.choice([1,3,5,7,9]))
l=[1,2,3,4]
random.shuffle(l)
print(l)

print(random.sample(l,2))

print('*'*40)
print('has seed')
random.seed(1)
for i in range(5):
    ret = random.randint(1,10)
    print(ret)

print(random.random())
print(random.uniform(1,10))
print(random.randint(0,10))
print(random.randrange(1,10,5))
print(random.getrandbits(2))
print(random.choice([1,3,5,7,9]))

l=[1,2,3,4]
random.shuffle(l)
print(l)

print(random.sample(l,2))

 显示结果:

no seed
3
2
5
6
8

0.6944070250628032
1.0023001428048501
6
6
3
1
[3, 4, 1, 2]
[2, 3]
****************************************
has seed
3
10
2
5
2
0.49543508709194095
5.045419583098643
10
6
3
3
[3, 4, 2, 1]
[1, 4]

进程已结束,退出代码 0

2. 不常用函数

random模块中不常用的函数有如下:

函数名 说明
random.getstate() 捕获并返回生成器当前内部状态的对象,可以把它传递给setstate()函数来把生成器内部状态恢复到调用getstate()函数之前的状态,相当于备份
random.setstate(state) state应该是getstate()函数的结果,用来把生成器当前的内部状态恢复为state
random.betavariate(alpha,beta) Beta分布:参数的条件是alpha>0和beta > 0,返回值的范围介于0和1之间
random.expovariate(lambd) 指数分布
random.gammavariate(alpha,beta) Gamma分布:参数的条件的alpha > 0 & beta < 0
random.gauss(mu,sigma) 高斯分布: mu是平均值,sigma是标准差
random.normalvariate(mu,sigma) 正态分布:mu是平均值,sigma是标准差
random.paretovariate(alpha) 帕累托分布:alpha是形状参数
random.weibullvariate(alpha,beta) 威布尔分布:alpha是比例参数,beta是形状参数

举例:生成随机密码

生成的密码包含数字和字母,可以指定密码的位数。

 # -*- coding: utf-8 -*-
"""
@File   :   随机生成密码.py
@E-Mail :   zoya.zh@qq.com
"""
import random
import string

def get_random_passwd(length:int):
    '''
    生成随机密码h
    :param length:  密码的长度
    :return:  生成的随机密码
    '''
    num_count = random.randint(1,length-1)   # 密码中数字的个数
    char_count = length - num_count  # 密码中字母的个数

    num_list = [random.choice(string.digits) for i in range(num_count)]  # 随机生成的数字

    char_list = [random.choice(string.ascii_letters) for i in range(char_count)]  # 随机生成的字母

    psw = num_list + char_list

    # 随机排列序列中的字符
    random.shuffle(psw)

    # 把得到的密码转成字符串的格式返回
    result = ''.join(psw)

    return result

if __name__ == '__main__':
    psw = get_random_passwd(8)
    print(psw)

测试时每次都会生成不同的密码

 

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

Python中的random函数 的相关文章

随机推荐

  • echartGL中option各3D配置属性配置详解

    最近 接手一个项目需要实现echart中各种3D图表样式 我还是一如既往的从研究echart配置项中各属性含义开始入手 由于自己需要实现的是柱状图效果 类似地图3D 效果在这里不展示 直接进入自己所研究的内容 1 grid3D 希望上面的图
  • vue - H5 移动端网页中调用手机摄像头扫描二维码 / 条形码功能,在h5手机网页里调起相机摄像头进行二维码或条形码扫描效果详细教程(详细示例组件源码,一键复制开箱即用!)

    效果图 实现了在vue网页项目中 实现调起手机摄像头进行扫描二维码或者条码 可自定义样式 直接复制组件代码 然后根据你的需求改一下 lt
  • jacobi迭代法_迭代法解线性方程组、Jaboci迭代法、Gauss–Seidel迭代法、松弛法

    适用方程组 系数矩阵为大型稀疏的方阵 引例 迭代法可以用来解方程 考虑解下面简单的方程 既然都说要用迭代法求解 就不能用正常的同除1 5求解 利用迭代法 把方程改写为以下形式 也可以看作为 你 与 的交点 画出交点的话更加清晰 设 带入方程
  • 商业框架AB包的 原理分析

    1 prefab 的单独 把所有依赖项全部打包到一个包里 加载prefab 的时候 其ab依赖的资源就在包里边 2 通用的资源在外打包到一个包里 打包时会遍历所有资源 然后把资源打包成一个个ab包 需要加载什么文件 就去加载 3 xml 中
  • 【程序人生】做了低薪运营6年,靠什么转行拿下 20W 年薪?

    本人大学专业非计算机相关 毕业六年一直从事运营相关工作 在上家公司的新业务系统项目中 因为项目组人手不足兼做了部分功能测试 让我对测试工作产生了浓厚的兴趣 后来 在xxx学习后 我从一个运营妹纸成功转型成为某世界500强公司的外包 年薪近2
  • MS17-010漏洞攻击与防御(利用永恒之蓝攻击Win7系统)

    任务1 利用永恒之蓝攻击Win7系统 在Kali终端中输入命令 msfconsole 启动Metasploit 输入命令 use auxiliary scanner smb smb ms17 010 加载扫描模块 输入命令 set RHOS
  • Boost电路硬件设计实例

    上一篇 Boost电路原理分析及其元件参数设计 Vane Zhang的博客 CSDN博客 本文以单相光伏发电系统中前级Boost电路为例对其进行硬件设计 Boost电路的硬件电路主要包括能量转换电路 开关管驱动电路和信号检测电路的设计 1
  • 半导体八大工艺流程图_大国重器,国芯基石 半导体离子注入机行业研究报告...

    主要观点 掺杂是指在硅晶体中加入少量的杂质元素 以此改变衬底材料的电学性质 是半导体加工制造过程中关键的工艺技术 根据掺杂的技术原理 该工艺可分为热扩散和离子注入 由于离子注入技术可以在芯片制成尺寸更小 空间结构更复杂的情况下实现元素掺杂
  • MCL2 -1.1.1

    大家好 承诺大家已久的1 1游戏体验优化 历经一个星期 也终于是完成了1 1 1版本 这个版本更新内容其实蛮多的 接下来就请大家拭目以待 更新目录 更新内容 更新代码 应用程序 更新内容 游戏封面体验增强 修复末影龙打完会闪退的bug 文件
  • C#企业微信 接收事件服务器(添加外部联系人事件)#openapi回调地址请求不通过# 完整源代码

    设置接收事件服务器 openapi回调地址请求不通过 企业微信api 添加外部联系人事件 using System Web UI WebControls using System IO using System Text using Sys
  • 从文本文件读取文件名,并删除指定路径下的文件

    void deleteFiles const QString path const QString delFileNameTxt const QString recycleBinPath QStringList delFileNames Q
  • 很多软件安装时为什么需要设置环境变量

    设置环境变量的目的 背景 在cmd中想要执行net start mysql等操作命令 必须先cd到bin文件所在目录 如D mysql mysql x x xx winx64 bin 那么每次打开mysql 都要输入那么多指令切换目录是不是
  • ME2M/ME3M增强 - ALV显示里增加字段(原)

    i s 本帖最后由 lulu1212 于 2012 10 12 11 23 编辑 之前用户提出要在ME2M ME3M里加字段 网上找了些资料发现是在结构里APPEND字段就可以了 结构名是 MEREP OUTTAB PURCHDOC 例如
  • RH850学习笔记

    这是一篇关于瑞萨RH850系列单片机的心得 网上关于这方面的资料特别少 可能是使用的人较少的原因吧 由于工作的原因 这段时间接触了这款单片机 所以写下了这篇博客 希望能给大家一些帮助 R7F701023 1023F1L是我最早接触的瑞萨MC
  • 算法笔记——动态规划

    算法笔记 动态规划 动态规划是一个非常灵活的算法 动态规划本身不难 无非就是一个状态转移的过程 难点就在于我们该如何去定义 状态 而这就需要我们多做题来积累经验 这也是初学者遇到动态规划往往无从下手的原因 动态规划的核心在于状态和状态转移方
  • 设计模式-迭代器模式

    迭代器模式 1 迭代器模式介绍 迭代器模式是一种行为型设计模式 它提供了一种方法来访问聚合对象中的各个元素 而不暴露其内部表示 通过使用迭代器 客户端可以遍历一个聚合对象中的元素 而不必了解其内部实现 在迭代器模式中 定义了一个迭代器接口
  • Vue生命周期与自定义组件

    自定义组件 Element 组件其实就是自定义的标签 例如
  • vue3知识点:setup

    文章目录 二 常用 Composition API 1 拉开序幕的setup setup的两个注意点 本人其他相关文章链接 二 常用 Composition API 问题 啥叫 组合式API 答案 请看官方文档 https v3 cn vu
  • 【Android】获取手机的相关硬件信息

    今天在QQ群里聊天 一个哥们在某宝买到了一个运行内存16G的手机 当时我就吓尿了 所以有了写个程序把这个手机的实际内存读出来的想法 于是就有了今天这篇博客 所有的信息项如下图所示 由于我的测试机没有插手机卡 所以有的信息会显示为空 以下就是
  • Python中的random函数

    显示 显示结果 random模块实现了各种分布的伪随机数生成器 伪随机数 人类使用算法等方式 以一个基准 也被称为种子 常用的是时间戳 来构造一系列数字 这些数字的特性符合人们所理解的随机数 一旦算法和种子都确定 产生的随机数序列也是确定的