博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day5模块学习--random模块
阅读量:6215 次
发布时间:2019-06-21

本文共 3321 字,大约阅读时间需要 11 分钟。

 

中的random模块用于生成随机数

下面具体介绍random模块的功能:

 

    1.random.random()

    #用于生成一个0到1的浮点数   随机浮点数:0<= n < 1.0

    >>> import random

  >>> random.random()
  0.10014889182317255
  >>> random.random()
  0.9318386759483899
  >>> random.random()
  0.7933067981427825

    2.random.uniform(a,b)

    #用于生成一个指定范围内的随机浮点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成随机数n:a <= n <= b。如果a < b,则b <= n <= a。

    >>> random.uniform(1,4)

  3.1024302829110297
  >>> random.uniform(4,1)
  3.604505878728916
  >>> random.uniform(2,3)
  2.987738694261377
  >>> random.uniform(3,3)
  3.0

    3.random.randint(a, b)

    #用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n:a <= n <= b

    >>> random.randint(1,3)

  2
  >>> random.randint(3,3)
  3

    4.random.randrange([start], stop[, step])

    #从指定范围内,按指定基数递增的集合中,获取一个随机数

    random.randrange(10,30,2),结果相当于从[10,12,14,16,...,28]序列中获取一个随机数。random.randrange(10,30,2)在结果上与random.choice(range(10,30,2)等效。

    一直以为random.randrange()与random.randint()功能类似,只是randint()包含下限,而random.randrange()不包含下限,原来random.randrange()可以指定步长,说明这是一个区域其实,random.randint()在上下限随机去一个值,random.randrange()是在数列中随机去一个数。

    >>> random.randrange(2,10,3)

  5
  >>> random.randrange(2,10)
  3
  >>> random.randrange(2,10,3)
  8

    5.random.choice(sequence)

    #参数sequence表示一个有序类型。从序列中获取一个随机元素,sequence在Python不是一种特定的类型,而是泛指一系列类型。list,tuple,字符串(str)都属于sequence。

    random.chocice是从sequence中随机取一个元素,如列表,字符串,元组中随机取一个元素。

    >>> name = "alexssb"

  >>> names = ("alex","250","is")
  >>> x = list(range(2,8))
  >>> random.choice(name)     #从字符串中取值
  'a'
  >>> random.choice(names)    #从元组中随机提取元素
  'alex'
  >>> random.choice(names)   
  'is'
  >>> random.choice(x)         #从列表中随机提取元素
  4

    6.random.shuffle(x[, random])

    #用于将一个列表中的元素打乱,即将列表内的元素随机排列。

    >>> random.shuffle(x)

  >>> x
  [3, 4, 7, 5, 6, 2]

    random.shuffle(list)用于将列表里面的元素随机打乱。

    7.random.sample(sequence, k)

    #从指定序列中随机获取指定长度的片断并随机排列。sample函数不会修改原有序列。

    >>> names = ["alex","tenglan","chunyun","geng","aoi","cang"]

  >>> random.sample(names,4)
  ['chunyun', 'alex', 'geng', 'aoi']
  >>> names
  ['alex', 'tenglan', 'chunyun', 'geng', 'aoi', 'cang']

    random.sample(sequence,k)从列表中随机获取一个元素

    下面现在用random模块来写一个随机验证码。我们知道,随机验证码有大小写字母组成。也包含数字。下面来看看如何生成一个随机验证码。

import randomdef verification_code():    '''生成一个随机验证码'''    lists = list(range(65,91))    code = ""    '''大写字母对应的数字编码'''    '''定义一个空的列表,用于存放大小写字母对应的值'''    for num in range(97,123):        '''小写字母对应的数字编码,凭借到一块'''        lists.append(num)    for i in range(6):        random_num = random.randint(1,6)       #随机值,当随机值与循环值相等的时候是字母,不相等的时候是数字,这样就生成了字母加数字的随机验证码        if i == random_num:            string = chr(random.choice(lists))        else:            string = str(random.randint(0,9))        code += string    return codex = verification_code()print(x)

    上面代码生成一个6位数的随机验证码。

    也可以生成一个随机验证码,让每次里面都包含数字和字母。如下:

   

import randomdef verification_code():    '''生成一个随机验证码'''    '''生成一个65-90,97-122的序列'''    numbers = list(range(65,123))    for num in range(91,97):        numbers.remove(num)    '''把序列进行打乱'''    random.shuffle(numbers)    random_strs = random.sample(numbers,2)    '''生成两个随机数'''    random_nums = []    '''存放随机验证码'''    for random_str in random_strs:        random_nums.append(chr(random_str))    for random_num in range(0,2):        random_nums.append(str(random.randint(1,9)))    code = "".join(random_nums)    return codex_code = verification_code()print(x_code)

    上面代码生成一个随机验证码,每次都包含字母,不会只有数字或者之后字母的情况发生。

转载于:https://www.cnblogs.com/gengcx/p/7215281.html

你可能感兴趣的文章
centos7的selinux的原理及相关配置
查看>>
Linux学习笔记5-文件权限与脚本
查看>>
cmd脚本(WIN10下)
查看>>
python基于zabbix获取服务器基础信息
查看>>
三、Spring MVC之Restful风格的实现
查看>>
×××运算四舍五入
查看>>
《Oracle从入门到精通》指导下安装Oracle出现的问题
查看>>
VMware Tools 安装
查看>>
centos6.5无法挂在硬盘
查看>>
配置Microsoft Hyper-V Server
查看>>
【我的技术我做主】8年IT职业生涯
查看>>
2014年计划
查看>>
Jmeter分布式压测
查看>>
centos 配置vsftpd 虚拟用户
查看>>
快速实现python c扩展模块
查看>>
vSphere 6.0中VM Component Protection(VMCP)详细解析
查看>>
The server does not support version 3.0 of the J2EE Web module specification
查看>>
4月上旬我国域名总量新增近4万个 环比减少56.7%
查看>>
我的友情链接
查看>>
mysql-proxy实现读写分离(比较详细)
查看>>