【 原创作者:小康2021 】

random 模块

random 库是使用随机数的 Python 标准库,使用时候只需要 import random 即可。

从概率论角度来说,随机数是随机产生的数据(比如抛硬币),但是计算机是不可能产生随机值的,真正的随机数也只是在特定条件下产生的确定值,只不过这些条件我们没有理解,或者超出了我们的理解范围。

计算机不能产生真正的随机数,只能产生类似于随机数的伪随机数。

注:伪随机数是计算机中通过采用梅森旋转算法生成的(伪)随机序列元素

random 模块的作用就是产生伪随机数,其包含了 randint 函数、random 函数、uniform 函数、choice 函数、randrange 函数、sample 函数以及 shuffle 函数等多种与随机有关的函数,下面将着重介绍几种。

=============================== 开 START 始 ===============================

一、randint 函数

1、用法

num = randint(start, end)

产生一个 [ start , end ] 内的一个整数型(int)随机数,其中 start 和 end 必须为整数,且 start <= end 

2、实例

from random import randint
print(randint(1, 1000))    #在 1 到 1000 之间随机产生一个整数

输出结果为:

666

特别地,当 start 等于 end 的时候,比如:

from random import randint
print(randint(3, 3))    #此时 start = end

输出的结果永远是:

3

3、错误用法

如果 start > end ,那么就会报错:

from random import randint
print(randint(5, 2))    #此时 start > end 

报错内容为:

ValueError: empty range for randrange() (5, 3, -2)

二、random 函数

1、用法

num = random()

产生一个随机生成的浮点型(float)实数,其范围在 [ 0 , 1 ) 内,不包括 1 。

2、实例

from random import random
print(random())    #随机产生一个 0 到 1 且不包括 1 的浮点数
print(10*random())    #随机产生一个 0 到 10 且不包括 10 的浮点数

输出结果为:

0.4167967975536755
7.7058321694517335

三、uniform 函数

1、用法

num = uniform(start, end)

产生一个 [ start , end ] 内的一个浮点型(float)随机数,start 和 end 可以不是整数,且 start 与 end 的顺序可以颠倒

2、实例

from random import uniform
print(uniform(1.5, 3))
print(uniform(3, 1.5))

这两种用法都是可行的,其输出结果为:

2.485862092821843
1.658384848539999

同时,与 randint 函数相同的是:

from random import uniform
print(uniform(1.5, 1.5))    #此时 start = end

输出结果永远为:

1.5

四、choice 函数

1、用法

value = choice(seq)

seq 可以是一个非空序列,如列表(list)、元组(tuple)、字符串(str),但不能是集合(set)。

choice 函数会从非空序列中随机选取一个数据作为返回值。

2、实例

from random import choice
print(choice(('you','me','them')))    #此时 seq 为元组(tuple)
print(choice(['我','是','好','学','生']))    #此时 seq 为字符串构成的列表(list)
print(choice([1,2,3,4,5]))    #此时 seq 为整数构成的列表(list)
print(choice('哔哩哔哩 (゜-゜)つロ 干杯~-bilibili'))    #此时 seq 为字符串(str)

输出结果为:

you
是
2
哔

3、错误用法

如果 seq 是一个集合(set),那么就会报错:

from random import choice
print(choice({'这','是','一','个','集','合'}))    #此时 seq 为一个集合(set)

报错内容为:

TypeError: 'set' object is not subscriptable

五、randrange 函数

1、用法

num = randrange(start, stop, step)

产生一个 [ start , stop ) 以内,间隔为 step 的随机整数,但不包括 stop ,且 start、stop、step 都必须为整数,而且 step ≠ 0 ,start  ≠ stop 

若 step > 0,则必须 start < stop ;若 step < 0,则必须 start > stop 。

2、实例

from random import randrange
print(randrange(1,101,3))    #从 1 到 101 中以 3 为间隔随机选取一个整数
print(randrange(101,1,-3))    #从 101 到 1 中以 -3 为间隔随机选取一个整数

输出结果为:

40
5

3、错误用法

(1)如果 step = 0,那么就会报错:

from random import randrange
print(randrange(1,4,0))    #此时 step = 0

报错内容为:

ValueError: zero step for randrange()

(2)如果 start = stop ,那么就会报错:

from random import randrange
print(randrange(1,1,1))    #此时 start = end

报错内容为:

ValueError: empty range for randrange() (1, 1, 0)

(3)如果 step < 0 ,而 start < stop ,或者 step > 0 ,而 start > stop 那么就会报错:

from random import randrange
print(randrange(2,5,-2))    #此时 step < 0 ,而 start < end 

报错内容为:

ValueError: empty range for randrange()

4、省略用法

start 和 step 都可以不提供参数,默认是从 0 开始,间隔为 1 。但如果需要指定 step ,则必须先指定 start 。

from random import randrange
print(randrange(4))    #从 0, 1, 2, 3 中随机选取一个整数
print(randrange(1, 4))    #从 1, 2, 3 中随机选取一个整数

输出结果为:

2
3

从中我们可以看出 randrange(start, stop, step) 其实在效果上等同于 choice(range(start, stop, step)) 。

六、sample 函数

1、用法

num = sample(population, x)

population 是一个非空列表序列,x 是需要从列表中随机选取元素的个数,x 的值不可超过 population 的元素个数

sample 函数会从 population 中随机选取 x 个元素,但其不改变原序列,并将这 x 个元素以一个新列表的形式输出,其中输出的元素没有顺序之分

2、实例

from random import sample
a = [1, 2, 3, 4, 5]
b = 'Nice!'
print(sample(a,2))    #从列表 a 中随机选取两个元素
print(sample(b,3))    #从字符串 b 中随机选取三个元素
print(a,b)    #打印原序列

输出结果为:

[3, 5]
['!', 'c', 'e']
[1, 2, 3, 4, 5] Nice!    #原序列未改变

3、错误用法

如果 x 的值超过 population 的元素个数,那么就会报错:

from random import sample
print(sample([1,2,3],4))    #此时 x 的值超过了序列 population 中元素的个数

报错内容为:

ValueError: Sample larger than population or is negative

七、shuffle 函数

1、用法

shuffle(seq)

将序列 seq 中元素的顺序打乱,即改变原来的序列,此处序列 seq 不可为字符串(str)

2、实例

from random import shuffle
list = ['我','是','大','聪','明']
shuffle(list)    #打乱 list 列表
print(list)

输出结果为:

['大', '聪', '明', '是', '我']

3、错误用法

如果 seq 为字符串(str),那么就会报错:

from random import shuffle
str = '字符串'
shuffle(str)
print(str)

报错内容为:

TypeError: 'str' object does not support item assignment

================================ 结 END 束 ================================

以上内容就是对 random 模块里的一些常用函数的简单总结,原创不易,请大家多多支持!!!

Python random 模块的总结相关推荐

  1. python数组随机打乱_对Python random模块打乱数组顺序的实例讲解

    在我们使用一些数据的过程中,我们想要打乱数组内数据的顺序但不改变数据本身,可以通过改变索引值来实现,也就是将索引值重新随机排列,然后生成新的数组.功能主要由python中random模块的sample ...

  2. Python random 模块 - Python零基础入门教程

    目录 一.Python random 模块常用函数介绍 二.Python random 模块使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Pyt ...

  3. Python random模块常用方法的使用

    Python random模块常用方法的使用 Python 的random模块包含许多随机数生成器. random是Python标准库之一,直接导入即可使用.本文介绍random中常用方法的用法. 一 ...

  4. python数据模块下载顺序_对Python random模块打乱数组顺序的实例讲解

    在我们使用一些数据的过程中,我们想要打乱数组内数据的顺序但不改变数据本身,可以通过改变索引值来实现,也就是将索引值重新随机排列,然后生成新的数组.功能主要由python中random模块的sample ...

  5. python random模块中的指令_10分钟让你掌握python编程中random模块功能使用,非常详细...

    原标题:10分钟让你掌握python编程中random模块功能使用,非常详细 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可 ...

  6. python random模块

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  7. python random模块导入_Python学习笔记(二十)—模块的导入

    一.模块介绍 Python 提供了强大的模块支持,主要体现在Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块.通过这些强大的模块可以极大地提 ...

  8. python random模块中的指令_python中random模块的使用

    这些方法位于random模块中 random.random(),同javascript的Math.random(),返回[0.0,1)之间的浮点数 random.uniform(a, b),返回[a, ...

  9. Python random模块sample、randint、shuffle、choice随机函数

    一.random模块简介 Python标准库中的random函数,可以生成随机浮点数.整数.字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等. 二.random模块重要函数 1 ).ra ...

  10. 对python random模块的认识_Python学习_random模块使用

    #!/usr/bin/python #-*- encoding:UTF-8 -*- #date:20180516 random模块的方法:随机生成想要的数字.字母等 '''随机函数,random生成的 ...

最新文章

  1. 2019牛客暑期多校训练营(第七场)
  2. VC下调用x264进行视频编码,
  3. MVC4下配置log4net 五部曲
  4. javaweb基础知识点记录2
  5. git提交时发现iml文件没有被排除
  6. linux搭建虚拟化平台报告,CentOS 7中搭建KVM虚拟化平台的方法步骤
  7. 初探asp.net异步编程之await
  8. 云盘万能钥匙破解去后门版Cracked By 8848
  9. 金士顿u盘数据恢复软件推荐
  10. 手机的尺寸、分辨率、像素密度的关系
  11. javascript 判断为负数_JavaScript判断数字正负数
  12. 华东师范大学 硕士毕业论文模版 overleaf版
  13. KindEditor插件(富文本编辑器)的使用
  14. 连续三次世界500强面试经历
  15. 前端优化 - 收藏集 - 掘金
  16. 网站服务器评测,9.2分! 浪潮服务器受到海外权威专业评测网站肯定
  17. 夏日PHP图书管理系统 v0.3(源码)
  18. 破解还原卡的方法总结!! 1
  19. permute()--对维度进行换位
  20. Lombok插件的安装以及使用

热门文章

  1. 词性标注的标签对应含义
  2. String字符串中换行和标签在页面消失
  3. Gstreamer应用开发实战指南(二)
  4. 谈谈目前网络工程师的待遇问题
  5. R语言载入rjava
  6. catia 创成钣金设计_CATIA创成式钣金设计(GSD)基础
  7. String类的详细讲解
  8. “该内存不能为读写”的完全解决方案
  9. 三菱Fx3u MODBUS RTU 从站程序 支持H03和H10功能码
  10. 使用阿里云搭建个人网站/服务器