Python中的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 random

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

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

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

import random

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

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

最新文章

  1. Linux使用lvresize扩展或缩减lv大小
  2. linux下查看某软件是否已安装, ubuntu安装deb包
  3. ajax json 动态传值
  4. Math类和Random类(数学公式相关类)
  5. 如何在WPF应用程序中使用视频处理控件TVideoGrabber
  6. bzoj 2141 线段树套平衡树
  7. ng-model值字符串转数值型(convertToNumber directive)
  8. 搭建PHP本地服务器(XAMPP)
  9. 利用XAMPP本地搭建WordPress博客
  10. 使用JdbcTemplate 操作PostgreSQL,当where条件中有timestamp类型时,报错operator does not exist: timestamp w/out timezone
  11. IE11 开启F12开发人员工具中的 始终从服务器刷新
  12. 老男孩Python全栈学习 S9 日常作业 001
  13. principal(括号匹配+多组查询)
  14. django APPEND_SLASH
  15. javaScript系列 [05]-javaScript和JSON
  16. 虚拟机模拟SSD用于Ceph测试
  17. C++:explicit关键字
  18. 异常could not retrieve snapshot
  19. 使用ssh密钥登录虚拟主机里的另一台主机报警的解决方案
  20. Liferay7 BPM门户开发之2: BPMN 2.0 规范入门 (Activiti BPMN extensions)

热门文章

  1. P3355 骑士共存问题
  2. Vue.js学习笔记(二)
  3. jvm如何判断对象是否可以被回收
  4. HDU 5446 lucas CRT
  5. 关于File 文件操作
  6. soj2013.Pay Back
  7. Win7下VS2010不能链接问题
  8. equals方法变量和常量位置区别
  9. 新手向-同步关键字synchronized对this、class、object、方法的区别
  10. 2016 最佳 Linux 发行版排行榜【转】