结论先行

生成随机数:

# salt = ''.join(random.choices(string.ascii_letters + string.digits, k=3))
salt = ''.join(random.sample(string.ascii_letters + string.digits, 3))
print(salt)

random模块

python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据。

random主要函数接受

  • random.random() 用于生成一个随机浮点数

    >>> import random
    >>> random.random()
    0.025952242994744412
  • random.uniform(a,b) 用于生成一个指定范围的随机浮点数。若a=b,则生成的浮点数是a

  • >>> random.uniform(2,5)
    2.3194041077057443
    >>> random.uniform(2,2)
    2.0
  • random.randint(a,b) 用于生成一个指定范围内的整数,生成的随机整数a<=n<=b

  • >>> random.randint(2,3)
    2
    >>> random.randint(2,3)
    3
    >>> random.randint(2,2)
    2
  • random.randrange([start],stop[,step]) 从指定范围,按指定基数递增的集合中获取一个随机数,基数缺省值为1,不包含stop。

  • random.randrange(10) #输出0~10之间的任意数
    random.randrange(10,100) #输出为10到100间的任意数
    random.randrange(10,100,4) #输出为10到100内以4递增的序列[10,14,18,22...]
    random.choice(range(10,100,4)) #输出在结果上与上一条等效
  • random.shuffle(x[,random]) 用于将一个列表中的元素打乱

  • >>> list=[1,2,3,4,5]
    >>> random.shuffle(list)
    >>> list
    [4, 1, 2, 5, 3]
    >>> random.shuffle(list)
    >>> list
    [2, 4, 3, 1, 5]
  • random.choice(sequence) 从序列中获取一个随机元素,包括list、tuple、字符串等

  • >>> random.choice(range(10))
    7
    >>> random.choice("hello")
    'e'
    >>> random.choice([1,2,3])
    3
    >>> random.choice((1,2,3))
    1
  • random.choices(sequence,k=n) 从指定序列中随机获取n个元素作为一个片段返回。该函数还可以设置各个元素的权重,详见官方文档。python3才有的函数。

    >>> import random
    >>> random.choices('12345678',k=3)
    ['6', '3', '7']
  • random.sample(sequence,k) 从指定序列中随机获取k个元素作为一个片段返回,sample函数不会修改原有序列

  • >>> a='1234567890'
    >>> random.sample(a,3)
    ['4', '1', '5']
    >>> a
    '1234567890' # a不变
    >>> random.sample([1,2,3,4,5,6,7,8],3)
    [1, 7, 5]
    >>> random.sample((1,2,3,4,5,6,7,8),3)
    [6, 2, 7]

python中的随机数生成的更多相关文章

  1. python中uuid来生成机器唯一标识

    摘要: 我们可以使用uuid1的后16位来标识一个机器.  # use machine specific uuid, last 16 char will be the same if machine ...

  2. Python中的矩阵、多维数组:Numpy

    Numpy 是Python中科学计算的核心库.它提供一个高性能多维数据对象,以及操作这个对象的工具.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对 ...

  3. Python中随机数的生成

    在Python中要实现随机数的生成,需要使用random模块中randint方法. 其具体实现方法如下: import random a = random.randint(1,20) #(1,20)为 ...

  4. Python中面向对象的概念

    1.语言的分类 1)面向机器 抽象成机器指令,机器容易理解.代表:汇编语言. 2)面向过程 做一件事,排除步骤,第一步做什么,第二步做什么,如果出现A问题,做什么处理,出现b问题,做什么处理.问题规模 ...

  5. [转]Python中的str与unicode处理方法

    早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自 ...

  6. python中的Ellipsis

    ...在python中居然是个常量 print(...) # Ellipsis 看别人怎么装逼 https://www.keakon.net/2014/12/05/Python%E8%A3%85%E9 ...

  7. python中的默认参数

    https://eastlakeside.gitbooks.io/interpy-zh/content/Mutation/ 看下面的代码 def add_to(num, target=[]): tar ...

  8. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  9. python中的TypeError错误解决办法

    新手在学习python时候,会遇到很多的坑,下面来具体说说其中一个. 在使用python编写面向对象的程序时,新手可能遇到TypeError: this constructor takes no ar ...

随机推荐

  1. netty源码解析(4.0)-21 ByteBuf的设计原理

        io.netty.buffer包中是netty ByteBuf的实现.ByteBuf是一个二进制缓冲区的抽象接口,它的功能有: 可以随机访问.顺序访问. 支持基本数据类型(byte, shor ...

  2. Actor模型(分布式编程)

    Actor的目的是为了解决分布式编程中的一系列问题.所有消息都是异步交付的,因此将消息发送方与接收方分开,正是由于这种分离,导致actor系统具有内在的并发性:可以不受限制地并行执行任何拥有输入消息的 ...

  3. .net core web api 添加对session跨域实现

    1.配置Startup /ConfigureServices添加: services.AddSession(options => { options.Cookie.Name = ".A ...

  4. 解决NuGet下载太慢的问题

    以下载CefSharp.Wpf v57.0.0版本为例: 1.打开NuGet官网:https://www.nuget.org/ 2.输入CefSharp.Wpf,点击查询,如下所示: 3.确认版本正确 ...

  5. js 轮播图效果

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. Pycharm自带Git实现版本管理

    之前一直使用本地的git客户端,通过命令来上传.下载代码到Gitlab:每次都需要启动git客户端,敲git命令来完成,不够灵活,因为强大的Pycharm就自带git功能,可以直接在Pycharm完成 ...

  7. Easy User Manager System writeup

    0x01 解题 思路 一个进程用自己的ip去申请拿到code然后进入verify页面,另外一个进程去申请8.8.8.8 步骤 1. 首先注册一个账号 然后用两个不同的浏览器进入Change页面.这里我 ...

  8. Dynamics 365触发Microsoft Flow自动生成PDF并作为附件送邮件

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  9. 剑指offer 27:二叉搜索树与双向链表

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 解题思路 采用中序遍历遍历二叉树,利用二叉排序树的特性,顺次连接节点,形成 ...

  10. Web APP自动更新

    我们的手机软件每天都要经营,经常需要更新,比如程序的Bug,好的功能,好的洁面... ... 这就需要我们的用户打开web app时候自动更新客户端程序,而不是再去应用程序商店从新下载.今天的笔记就是 ...