python标准库random模块处理随机数
作者:小地瓜重新去华容道工作 发布时间:2023-11-23 16:22:49
标签:python,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
来源:https://blog.csdn.net/sinat_41752325/article/details/126999626


猜你喜欢
- 前言上机实践课程开始了,嗯,老师来了之后念了下PPT,然后说:开始做吧.........然后就开始了Python的GUI之路,以前没接触过P
- 摘要:本篇博客将详细介绍如何对YOLOv5车牌识别模型进行优化和部署。我们将讨论模型优化策略,如模型蒸馏、模型剪枝和量化等。此外,我们还将介
- 本文实例讲述了Python列表操作。分享给大家供大家参考,具体如下:#coding=utf8'''''
- 如下所示:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional
- XML即可扩展标记语言(eXtensible Markup Language)。标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可
- 这几年来,我们这个行业一直都在谈用户体验,以用户为中心的设计。“用户体验”是指用户访问网站的界面、功能、相关信息的可读性、操作的方便性,交互
- 本文研究的主要是Python使用pickle模块存储数据报错解决方法,以代码的形式展示,具体如下。首先来了解下pickle模块pickle提
- 有的时候取出全部数据库记录也许正好满足你的要求,不过,在大多数情况下我们通常只需得到部分记录。这样一来该如何设计查询呢?当然会更费点脑筋了,
- 答案先有 “类属性”,再有 “运行 metaclass”#
- 这段时间服务器崩溃2次,一直没有找到原因,今天看到论坛发出的错误信息邮件,想起可能是mysql的默认连接数引起的问题,一查果然,老天,默认
- 介绍毫无疑问,任何一个试图使用 CSS 的网页设计师和开发人员都会发现不同的浏览器要求不同的样式声明。这些烦恼归咎于各浏览器及其各版本不同程
- 算法11、分小数和整数:如果小数点个数为1,则可能是小数。如小数点个数为0,则可能是整数。小数点个数非0也非1,那么就不是数字。2、如果是小
- 第一步:下载mysql镜像镜像docker pull mysql默认是下载最新稳定版第二步:启动mysql镜像docker run --na
- 今天学习Python的时候,需要安装一个第三方库,Python Imaging Library,是Python下面一个非常强大的处理图像的工
- 1、直接贴代码#!C:/Python27#coding=utf-8from selenium import webdriverfrom se
- 1 需求,heeaders 参数需要拼接中文参数param 解决如下url = 'https://....search?keywor
- 删除字段从Model中删除一个字段要比添加容易得多。 删除字段,仅仅只要以下几个步骤: 删除字段,然后重
- 过去有很多网页设计师喜欢将他们的网页效果图用table布局实现成网页,但是这样做会遇到一个比较麻烦的问题就是,后期调试和维护会相当的困难。现
- 一: 安装命令jupyter: pip install jupyter如果缺少依赖,缺啥装啥二: 运行 jupyter notebook首先
- 对numpy 矩阵进行通道间求均值给定一个3x2x2得矩阵,得到一个2x2的矩阵,其中对应元素是通道间的均值import numpy as