百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

一日一技:Python 中的random模块

itomcoil 2025-02-08 11:21 27 浏览

Python 中的random模块

Python随机模块教程展示了如何在Python中生成伪随机数。

随机数发生器

随机数生成器(RNG)生成一组值,这些值在外观上不显示任何可区分的模式。随机数发生器分为两类:硬件随机数发生器和伪随机数发生器。硬件随机数发生器被认为可以产生真正的随机数。伪随机数生成器根据软件算法生成值。它们产生看起来随机的值。但是,如果算法已知,则这些值是确定性的并且可以重现。

在计算中,随机生成器用于赌博,游戏,模拟或加密。

注意:为了安全起见,必须使用加密安全的伪随机数生成器。

为了提高伪随机数生成器的质量,操作系统使用从设备驱动程序收集的环境噪声,用户输入延迟或一个或多个硬件组件的抖动。这是密码安全的伪随机数生成器的核心。


种子

种子是一个初始化随机数生成器的值。 随机数生成器通过对先前的值执行某些运算来产生值。 当算法开始时,种子是生成器操作所依据的初始值。 生成器中最重要和最困难的部分是提供接近真实随机数的种子。

在Python中,random.seed函数提供了种子值。 如果未明确指定该值,则Python使用系统时钟或其他随机源。


注意:同一种子产生相同的伪随机数集。


Python中的module模块- same seed

在下面的示例中,我们使用相同的seed.

import random


myseed = 16

random.seed(myseed)

print(random.random())
print(random.random())
print(random.random())

print('********************************')

random.seed(myseed)

print(random.random())
print(random.random())
print(random.random())

输出结果为:

0.36152277491407514
0.480480665601294
0.4169526266056648
********************************
0.36152277491407514
0.480480665601294
0.4169526266056648


Python模块module中 random.randint方法:

random.randint函数生成值[x,y]之间的整数,举例说明,如下:

import random


val = random.randint(1, 10)
print(val)

val = random.randint(1, 10)
print(val)

val = random.randint(1, 10)
print(val)

val = random.randint(1, 10)
print(val)

上面的例子结果显示产生数字1到10之间的四个随机整数,结果如下:

10
4
9
3

Python模块module中的 random.randrange方法:

random.randrange函数不包括该间隔的右侧。 它选择[x,y)之间的值,示例如下:

import random


val = random.randrange(1, 10)
print(val)

val = random.randrange(1, 10)
print(val)

val = random.randrange(1, 10)
print(val)

val = random.randrange(1, 10)
print(val)

上面的示例生成数字1到10之间的四个随机整数,其中排除了10这个值,大家可以去操作体验一下。


random.uniform方法

random.uniform函数在值[x,y]之间生成随机浮点数,示例如下:

import random


val = random.uniform(1, 10)
print(val)

val = random.uniform(1, 10)
print(val)

val = random.uniform(1, 10)
print(val)

val = random.uniform(1, 10)
print(val)

该示例在数字1和10之间产生四个随机浮点数,执行结果如下:

9.594596536362012
5.832673168195081
6.7942727933257
7.035310921661894

random.choice

random.choice函数从非空序列返回一个随机序列,示例如下:

import random


words = ['sky', 'storm', 'rock', 'falcon', 'forest']


val = random.choice(words)
print(val)

val = random.choice(words)
print(val)

val = random.choice(words)
print(val)

val = random.choice(words)
print(val)

执行结果如下:

forest
forest
sky
storm

random.shuffle

random.shuffle函数可对序列进行随机排序

import random


words = ['sky', 'storm', 'rock', 'falcon', 'forest']


random.shuffle(words)
print(words)

random.shuffle(words)
print(words)

执行结果如下:

['storm', 'falcon', 'rock', 'sky', 'forest']
['falcon', 'storm', 'rock', 'forest', 'sky']


random.sample

random.sample允许从序列中随机选择n个唯一元素的样本,示例如下:

import random


words = ['sky', 'storm', 'rock', 'falcon', 'forest']


sample = random.sample(words, 3)
print(sample)

sample = random.sample(words, 3)
print(sample)

执行结果如下:

['rock', 'storm', 'falcon']
['forest', 'sky', 'rock']

Python secrets

secrets模块用于生成适用于管理数据(例如密码,帐户身份验证或安全令牌)的密码学强随机数,示例如下:

import secrets
import string


print(secrets.token_hex(12))
print(secrets.token_urlsafe(12))

alphabet = string.ascii_letters + string.digits
password = ''.join(secrets.choice(alphabet) for i in range(8))

print(password)

token_hex函数以十六进制返回随机文本字符串。 token_urlsafe函数返回一个随机的URL安全文本字符串。

alphabet = string.ascii_letters + string.digits
password = ''.join(secrets.choice(alphabet) for i in range(8))

在这里,我们生成一个八个字符的字母数字密码,执行结果如下:

69e6919fc04cbd6f9f5a25dc
eLL8-yT4cictksh8
YbpPzXvt

好了,在这一节中我们介绍了python中的random模块.,random这个模块是python中自带的,不需要安装,拿起来就可以直接用了。

希望对大家有用,有用的话,目的也就达到了。

相关推荐

《Queendom》宣布冠军!女团MAMAMOO四人激动落泪

网易娱乐11月1日报道据台湾媒体报道,南韩女团竞争回归的生死斗《Queendom》昨(10/31)晚播出大决赛,并以直播方式进行,6组女团、女歌手皆演唱新歌,并加总前三轮的赛前赛、音源成绩与直播现场投...

正确复制、重写别人的代码,不算抄袭

我最近在一篇文章提到,工程师应该怎样避免使用大量的库、包以及其他依赖关系。我建议的另一种方案是,如果你没有达到重用第三方代码的阈值时,那么你就可以自己编写代码。在本文中,我将讨论一个在重用和从头开始编...

HTML DOM tr 对象_html event对象

tr对象tr对象代表了HTML表格的行。HTML文档中出现一个<tr>标签,就会创建一个tr对象。tr对象集合W3C:W3C标签。集合描述W3Ccells返回...

JS 打造动态表格_js如何动态改变表格内容

后台列表页最常见的需求:点击表头排序+一键全选。本文用原生js代码实现零依赖方案,涵盖DOM查询、排序算法、事件代理三大核心技能。效果速览一、核心思路事件入口:为每个<th>绑...

连肝7个晚上,总结了66条计算机网络的知识点

作者|哪吒来源|程序员小灰(ID:chengxuyuanxiaohui)计算机网络知识是面试常考的内容,在实际工作中经常涉及。最近,我总结了66条计算机网络相关的知识点。1、比较http0....

Vue 中 强制组件重新渲染的正确方法

作者:MichaelThiessen译者:前端小智来源:hackernoon有时候,依赖Vue响应方式来更新数据是不够的,相反,我们需要手动重新渲染组件来更新数据。或者,我们可能只想抛开当前的...

为什么100个前端只有1人能说清?浏览器重排/重绘深度解析

面试现场的"致命拷问""你的项目里做过哪些性能优化?能具体讲讲重排和重绘的区别吗?"作为面试官,我在秋招季连续面试过100多位前端候选人,这句提问几乎成了必考题。但令...

HTML DOM 介绍_dom4j html

HTMLDOM(文档对象模型)是一种基于文档的编程接口,它是HTML和XML文档的编程接口。它可以让开发人员通过JavaScript或其他脚本语言来访问和操作HTML和XML文档...

JavaScript 事件——“事件流和事件处理程序”的注意要点

事件流事件流描述的是从页面中接收事件的顺序。IE的事件流是事件冒泡流,而NetscapeCommunicator的事件流是事件捕获流。事件冒泡即事件开始时由最具体的元素接收,然后逐级向上传播到较为不...

探秘 Web 水印技术_水印制作网页

作者:fransli,腾讯PCG前端开发工程师Web水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印)...

国外顶流网红为流量拍摄性侵女学生?仅被封杀三月,回归仍爆火

曾经的油管之王,顶流网红DavidDobrik复出了。一切似乎都跟他因和成员灌酒性侵女学生被骂到退网之前一样:住在950万美元的豪宅,开着20万美元的阿斯顿马丁,每条视频都有数百万观看...人们仿佛...

JavaScript 内存泄漏排查方法_js内存泄漏及解决方法

一、概述本文主要介绍了如何通过Devtools的Memory内存工具排查JavaScript内存泄漏问题。先介绍了一些相关概念,说明了Memory内存工具的使用方式,然后介绍了堆快照的...

外贸独立站,网站优化的具体内容_外贸独立站,网站优化的具体内容有哪些

Wordpress网站优化,是通过优化代码、数据库、缓存、CSS/JS等内容,提升网站加载速度、交互性和稳定性。网站加载速度,是Google搜索引擎的第一权重,也是SEO优化的前提。1.优化渲染阻塞。...

这8个CSS工具可以提升编程速度_css用什么编译器

下面为大家推荐的这8个CSS工具,有提供函数的,有提供类的,有提取代码的,还有收集CSS的统计数据的……请花费两分钟的时间看完这篇文章,或许你会找到意外的惊喜,并且为你的编程之路打开了一扇新的大门。1...

vue的理解-vue源码 历史 简介 核心特性 和jquery区别 和 react对比

一、从历史说起Web是WorldWideWeb的简称,中文译为万维网我们可以将它规划成如下的几个时代来进行理解石器时代文明时代工业革命时代百花齐放时代石器时代石器时代指的就是我们的静态网页,可以欣...