python标准库random模块处理随机数

 更新时间:2022年09月28日 11:13:15   作者:小地瓜重新去华容道工作  
这篇文章主要介绍了python标准库random模块处理随机数,random模块实现了各种分布的伪随机数生成器,具体介绍感兴趣的小伙伴可以参考一下

前言

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
4
7
5
5
1
()
0.730177834774
4.05987712407
8
6
0
7
[1, 4, 2, 3]
[4, 1]
****************************************
has seed
2
9
8
3
5
0.449491064789
6.8643367545
8
1
0
9
[1, 3, 4, 2]
[4, 1]

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是形状参数

3. 使用示例

3.1 生成随机密码

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

# -*- 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)

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

8oG4GW76

261Ro923

到此这篇关于python标准库random模块处理随机数的文章就介绍到这了,更多相关python random模块 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python pip更换清华源镜像的详细教程

    Python pip更换清华源镜像的详细教程

    大家经常会使用 pip 进行python 的第三方库安装,但是,有时会出现ERROR: No matching distribution found for PyQt6这类的错误,其实大部分原因是我们国内网络的问题,所以本文给大家介绍了Python pip更换清华源镜像的详细教程,需要的朋友可以参考下
    2024-09-09
  • 解决pycharm工程启动卡住没反应的问题

    解决pycharm工程启动卡住没反应的问题

    今天小编就为大家分享一篇解决pycharm工程启动卡住没反应的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 基于Python wxPython开发文件管理工具

    基于Python wxPython开发文件管理工具

    这篇文章主要为大家详细介绍了如何基于wxPython开发一个文件管理工具,该工具提供了多种实用功能,代码结构清晰,易于理解和扩展,需要的可以了解下
    2025-02-02
  • pycocotools介绍以及在windows10下的安装过程

    pycocotools介绍以及在windows10下的安装过程

    这篇文章主要介绍了pycocotools介绍以及在windows10下的安装过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 用Python制作检测Linux运行信息的工具的教程

    用Python制作检测Linux运行信息的工具的教程

    这篇文章主要介绍了用Python制作检测Linux运行信息的工具的教程,主要是用CPython读取运行系统的硬件参数、网络传输流量统计等,需要的朋友可以参考下
    2015-04-04
  • python数组转换为矩阵的方法实现

    python数组转换为矩阵的方法实现

    本文主要介绍了python数组转换为矩阵的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • python使用tornado实现简单爬虫

    python使用tornado实现简单爬虫

    这篇文章主要为大家详细介绍了python使用tornado实现简单爬虫,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Python执行JS的四种方法

    Python执行JS的四种方法

    本文将详细介绍Python中执行和调用JavaScript的多种方法,包括内置的execjs库、外部库如PyExecJS、使用浏览器引擎和与Node.js的交互,感兴趣的可以了解一下
    2023-11-11
  • Python 数据分析之Beautiful Soup 提取页面信息

    Python 数据分析之Beautiful Soup 提取页面信息

    Beautiful Soup 提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序
    2021-10-10
  • Python绘图系统之自定义一个坐标列表控件

    Python绘图系统之自定义一个坐标列表控件

    这篇文章主要为大家详细介绍了Python如何编写一个绘图系统,可以实现自定义一个坐标列表控件,文中的示例代码讲解详细,感兴趣的可以了解一下
    2023-08-08

最新评论