首页 » SEO优化 » shufflemywordsphp技巧_编程根本 Python随机数生成模块总结

shufflemywordsphp技巧_编程根本 Python随机数生成模块总结

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

Python随机数天生模块教程演示如何在Python中天生伪随机数。

文章目录1 先容1.1 随机数字天生器1.2 Python random 模块1.3随机种子2 利用2.1 Python random模块同一随机种子利用2.2 Python random.randint2.3 Python random.randrange2.4 Python random.uniform2.5 Python random.choice2.6 Python random.shuffle2.7 Python random.sample2.8 Python secrets 模块2.9 Python UUID模块3 参考1 先容1.1 随机数字天生器

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

shufflemywordsphp技巧_编程根本 Python随机数生成模块总结

在打算中,随机天生器用于游戏、仿照或密码学。
为了安全起见,必须利用加密安全的伪随机数天生器。
为了提高伪随机数天生器的质量,操作系统利用从设备驱动程序、用户输入延迟或来自一个或多个硬件组件的抖动中网络的环境噪声。
这是加密安全伪随机数天生器的核心。

shufflemywordsphp技巧_编程根本 Python随机数生成模块总结
(图片来自网络侵删)
1.2 Python random 模块

内置的Python random模块为各种分布实现伪随机数天生器。
Python利用Mersenne Twister算法来天生伪随机数。
这个模块安全性不高。
对付安全干系的任务,推举利用secrets模块。

1.3随机种子

种子是初始化随机数天生器的值。
随机数天生器通过对以前的值实行一些操作来天生值。
当算法开始时,种子是天生器操作的初始值。
天生器最主要和最困难的部分是供应靠近真正随机数的种子。
要把稳的是同一种子产生相同的伪随机数集。

2 利用2.1 Python random模块同一随机种子利用

不才面的示例中,我们利用相同的种子。
相同的种子值产生相同的伪随机值。

import randommyseed = 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.361522774914075140.4804806656012940.41695262660566480.361522774914075140.4804806656012940.41695262660566482.2 Python random.randint

random.randint函数在值[x,y]之间天生整数。
以下示例天生数字1到10之间的四个随机整数。

import randomval = 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)

563102.3 Python random.randrange

random.randrange函数打消了右边的区间。
它选择[x,y)之间的值。
以下示例天生数字1到10之间的四个随机整数,个中打消了值10。

import randomval = 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)

51452.4 Python random.uniform

random.uniform函数在值[x,y]之间天生随机浮点数。
以下示例在数字1和10之间产生四个随机浮点数。

import randomval = 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.18335955621202472.38563841781565026.454433009078886.6786039489978862.5 Python random.choice

该random.choice函数从非空序列返回一个随机元素。
该示例从列表中随机抽取一个单词四次。

import randomwords = ['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)

falconfalconforestrock2.6 Python random.shuffle

random.shuffle函数可以将序列打乱。
以下示例将单词列表随机打乱两次。

import randomwords = ['sky', 'storm', 'rock', 'falcon', 'forest']random.shuffle(words)print(words)random.shuffle(words)print(words)

['sky', 'falcon', 'forest', 'rock', 'storm']['storm', 'forest', 'falcon', 'sky', 'rock']2.7 Python random.sample

random.sample许可从一个序列中随机抽取n个唯一元素。
以下示例从单词列表中两次随机抽取三个元素。

import randomwords = ['sky', 'storm', 'rock', 'falcon', 'forest']sample = random.sample(words, 3)print(sample)sample = random.sample(words, 3)print(sample)

['storm', 'rock', 'forest']['rock', 'falcon', 'storm']2.8 Python secrets 模块

secrets模块用于天生适宜管理密码、帐户身份验证或安全令牌等数据的强随机数。
sercets模块中token_hex函数返回一个随机的十六进制文本字符串。
token_urlsafe函数返回一个url安全的随机文本字符串。

import secretsimport string# 返回一个随机的十六进制文本字符串print(secrets.token_hex(12))# 返回随机文本字符串print(secrets.token_urlsafe(12))# 天生一个八个字符的字母数字密码alphabet = string.ascii_letters + string.digitspassword = ''.join(secrets.choice(alphabet) for i in range(8))print(password)

49a4c25d535581c0e1edaf71_FHy1al7lB4fyVqUJjLoiy7k2.9 Python UUID模块

通用唯一标识符(Universally Unique Identifier)UUID是指一台机器上天生的数字,UUID是128位的全局唯一标志,常日由32字节的字符串表示。
UUID由以下几部分组成:

韶光戳uuid1():根据韶光或时钟序列天生字符串分布式打算uuid2():根据分布式打算环境DCE天生字符串机器识别号uuid3():根据MAC地址或者IP天生字符串,没有网卡则通过其他办法天生。
随机数uuid4():自动随机天生一组序列字符串散列值uuid5(): 基于名字和SAHI值

python中uuid模块供应UUID类,UUID类中通过函数uuid1(), uuid3(), uuid4(), uuid5()来天生1, 3, 4, 5各个版本的UUID ( python中没有uuid2()这个函数,但是UUID标识符中有该指示实现,缘故原由uuid2和uuid1类似,以是uuid2极少利用)。

import uuidname = "test"print(uuid.uuid1())print(uuid.uuid3(uuid.NAMESPACE_DNS, name))print(uuid.uuid4())print(uuid.uuid5(uuid.NAMESPACE_DNS, name))

62ecaf30-b61a-11ea-ac5b-0a58ac13091e45a113ac-c7f2-30b0-90a5-a399ab912716109e9212-e837-4cd9-9e21-3b48aba373fa4be0643f-1d98-573b-97cd-ca98a65347dd

uuid1可担保天生环球范围的唯一性字符. 但通过该方法天生的字符中包含有主机的网络地址, 可能危及隐私,根据实验的结果,产生的UUID后面几段的数字会完备一样。
uuid4利用随机数来天生UUID但是伪随机数有较低的重复概率。
uuid3和uuid5类似,都是通过打算命名空间和名字的SHA-1散列值来天生UUID。

在实际利用uuid1和uuid4较多,uuid3和uuid5更适宜唯一性更高的场合。

3 参考

​http://zetcode.com/python/random-module/​​

​​https://www.jianshu.com/p/f99737713c1b​​

标签:

相关文章

新浪微博嵌入代码社交媒体营销新境界

社交媒体逐渐成为人们获取信息、交流互动的重要平台。在我国,新浪微博作为最具影响力的社交媒体之一,吸引了大量用户关注。新浪微博不断优...

SEO优化 2025-02-18 阅读0 评论0

方舟刷龙代码大全探索游戏编程的奥秘

游戏产业日益繁荣,各类游戏层出不穷。在众多游戏中,方舟:生存进化以其独特的游戏玩法和丰富的内容吸引了大量玩家。为了提升游戏体验,许...

SEO优化 2025-02-18 阅读0 评论0

复制文本框代码开启智能时代的大门

人工智能技术逐渐渗透到人们生活的方方面面。如今,在众多的AI应用中,复制文本框代码成为了热门话题。本文将从复制文本框代码的原理、应...

SEO优化 2025-02-18 阅读0 评论0