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

目录
  • 前言
  • 1. 常用函数
  • 2. 不常用函数
  • 3. 使用示例
    • 3.1 生成随机密码

前言

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模块 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Python利用random生成一个列表内的随机数

    首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range(1,34)) print得到一系列随机数,执行一次得到一个随机数: print(random.choice(range(1,34))) 随机取1-33之间的6个随机数,可能重复: random.choices(range(1,34),k=6,weights=range(1,34)) 其权重值表示该数或该范围内的数输出概率大,输出结果为列表 随机取1-3

  • python随机数分布random均匀分布实例

    因为概率问题,所以需要测试一下python的随机数分布.到底是平均(均匀)分布,还是正态(高斯)分布. 测试代码如下: #! /usr/bin/env python #coding=utf-8 # ================================= # Describe : 测试random随机数分布 # D&P Author By: 常成功 # Create Date: 2017/10/07 # Modify Date: 2017/10/20 # (C) 2012-2017 A

  • Python中的np.random.seed()随机数种子问题及解决方法

    目录 1. 何为随机数种子 2. np.random.seed()参数问题 3. 使用方法 4. 随机数种子问题总结 前言: 最近在学习过程中总是遇到np.random.seed()这个问题,刚开始总是觉得不过是一个简单的随机数种子,就没太在意,后来遇到的次数多了,才发现他竟然是如此之用处之大!接下来我就把我所学到的关于np.random.seed()的知识分享给大家! 1. 何为随机数种子 随机数种子,相当于我给接下来需要生成的随机数一个初值,按照我给的这个初值,按固定顺序生成随机数.读到这,

  • python中的随机数 Random介绍

    目录 一.random模块简介 二.random模块重要函数 (1)random.random()函数 (2)random.randint()函数 (3)random.uniform()函数 (4)random.randrange()函数 (5)random.choice()函数 (6)random.shuffle()函数 (7)random.sample()函数 一.random模块简介 Python标准库中的random函数,可以生成随机浮点数.整数.字符串,甚至帮助你随机选择列表序列中的一

  • python numpy之np.random的随机数函数使用介绍

    np.random的随机数函数(1) 函数 说明 rand(d0,d1,..,dn) 根据d0‐dn创建随机数数组,浮点数, [0,1),均匀分布 randn(d0,d1,..,dn) 根据d0‐dn创建随机数数组,标准正态分布 randint(low[,high,shape]) 根据shape创建随机整数或整数数组,范围是[low, high) seed(s) 随机数种子, s是给定的种子值 np.random.rand import numpy as np a = np.random.ran

  • Python随机数种子(random seed)的使用

    目录 1. 随机数种子 2. numpy中的随机数种子 3. 随机数"顺序"的奥秘 在科学技术和机器学习等其他算法相关任务中,我们经常需要用到随机数,为了把握随机数的生成特性,从随机数的随机无序中获得确定和秩序.我们可以利用随机数种子(random seed)来实现这一目标,随机数种子,可以使得引入了随机数的整个程序,在多次运行中得到确定的,一致的结果. 很多博文谈到随机数种子,只是简单论及,利用随机数种子,可以每次生成相同的随机数.想真正用好掌握它,对此很容易产生疑惑,生成相同的随机

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

    目录 前言 1. 常用函数 2. 不常用函数 3. 使用示例 3.1 生成随机密码 前言 random模块实现了各种分布的伪随机数生成器. 伪随机数:人类使用算法等方式,以一个基准(也被称为种子,常用的是时间戳)来构造一系列数字,这些数字的特性符合人们所理解的随机数.一旦算法和种子都确定,产生的随机数序列也是确定的,所以称为伪随机数. 1. 常用函数 常用函数 说明 random.seed(a) 设置初始化随机种子,可输出相同随机数序列:a取整数或浮点数,不设置时默认以系统时间为种子 rando

  • 一篇文章带你了解python标准库--random模块

    目录 1. random库基本介绍 2. random库概述 2.1 基本随机函数 2.2 扩展随机函数 3. 随机数函数的使用 4. 实例 总结 1. random库基本介绍 Random库时使用随机数的python标准库 伪随机数:采用梅森旋转算法生成的(伪)随机序列中的元素 Random库主要用于生成随机数 使用random库:import random 2. random库概述 Random库包含两类函数,常用共8个 基本随机函数:seed() random() 扩展随机函数:randi

  • Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入random模块. import random 下面介绍下Python内置的random模块的几种生成随机数的方法. 1.random.random()随机生成 0 到 1 之间的浮点数[0.0, 1.0).注意的是返回的随机数可能会是 0 但

  • Python标准库uuid模块(生成唯一标识)详解

    目录 UUID格式组成 Python 中的uuid 模块 uuid1() 中的getnode() UUID实际应用 UUID 的劣势 参考资料: 总结 UUID (Universally Unique Identifier,通用唯一标识)是一个128位的用于计算机系统中以识别信息的数目,虽然生成UUID的概率不为零,但是无限接近零,因此可以忽略不记,如此一来,每个人都可以建立不与其他人冲突的UUID. UUID格式组成 规范的文本中,UUID的十六个八位字节标识位32个十六进制(基数16)数字,

  • python标准库OS模块详解

    python标准库OS模块简介 os就是"operating system"的缩写,顾名思义,os模块提供的就是各种 Python 程序与操作系统进行交互的接口.通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强代码的可移植性.如果该模块中相关功能出错,会抛出OSError异常或其子类异常. 注意 如果是读写文件的话,建议使用内置函数open(): 如果是路径相关的操作,建议使用os的子模块os.path: 如果要逐行读取多个文件,建议使用fileinput模

  • python标准库OS模块函数列表与实例全解

    Python OS模块库详解 os就是"operating system"的缩写,顾名思义,os模块提供的就是各种 Python 程序与操作系统进行交互的接口.通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强代码的可移植性.如果该模块中相关功能出错,会抛出OSError异常或其子类异常. 注意 如果是读写文件的话,建议使用内置函数open(): 如果是路径相关的操作,建议使用os的子模块os.path: 如果要逐行读取多个文件,建议使用fileinput模块

  • 代码解析python标准库logging模块

    目录 问题1:如何获取caller的(文件名,行号,函数名)? findCaller内容如下: currentframe函数的定义: 问题2: Logger对象的层级,父子关系如何实现的? Manager的getLogger()定义如下: 问题1:如何获取caller的(文件名,行号,函数名)? 当新增一条log记录时,最终将调用Logger类的_log方法,这个方法首先会创建一个LogRecord对象.LogRecord对象需要(filename, lineno, funcname)参数信息.

  • python标准库压缩包模块zipfile和tarfile详解(常用标准库)

    目录 常用的标准库 zip格式 ZipFile参数说明 操作含义 压缩方法 常用方法 tar包 和 gz.bz2.xz格式 删除压缩包中的文件 常用的标准库 在我们常用的系统windows和Linux系统中有很多支持的压缩包格式,包括但不限于以下种类:rar.zip.tar,以下的标准库的作用就是用于压缩解压缩其中一些格式的压缩包. zip格式 import zipfile zipfile模块操作压缩包使用ZipFile类进行操作,使用方法和open的使用方法很相似,也是使用r.w.x.a四种操

  • 一篇文章带你了解python标准库--os模块

    目录 1. os库基本介绍 2. os库之路径操作 3. os库之进程管理 4. os库之环境参数 5. 案例 总结 目前,计算机上主流的操作系统有Windows.Unix.Mac OS等,os模块为多操作系统的访问提供了相关功能的支持,涉及对文件相关操作功能的实现,系统访问path路径的操作,shell命令行操作,Linux扩展属性的操作,流程管理,CPU等硬件相关信息的获取,基于操作系统的真正的随机数的操作及相关的一些系统常量进行介绍. 1. os库基本介绍 Os库提供通用的.基本的操作系统

  • Python标准库defaultdict模块使用示例

    Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会带来很多的便利,多看看很有好处. defaultdict是其中一个方法,就是给字典value元素添加默认类型,之前看到过但是没注意怎么使用,今天特地瞅了瞅. 首先是各大文章介绍的第一个例子: 复制代码 代码如下: import collections as coll    def default_factory():      return 'default value'    d =

随机推荐