在Python中生成随机ID
我们用来在项目中为样本数据生成一个随机数,然后将其用于测试,填充空列或用于许多其他目的,关键是我们需要生成随机数据。在python中,有多种生成随机数据的方法,我们将在本文中探索其中一些-
Pythonrandom()
模块
python附带的重要库之一是随机的,我们将在代码中使用它。
要在您的代码中使用此模块,只需导入它即可,我们已经准备好使用它。
import random
让我们看看如何使用它-
import randomprint("What i will get, no idea as i'm using random.random()")
print(random.random())
输出结果
What i will get, no idea as i'm using random.random()0.5306626723173611
第二次,如果我尝试运行相同的程序,您将获得不同的输出-
What i will get, no idea as i'm using random.random()0.5504289430397661
随机模块上的几点:
random()是随机模块的基本功能
随机模块的几乎所有功能都使用
random()
方法。Random()函数将生成介于[0.0到1.0)之间的任何数字。
在Python中生成随机整数
下面两个函数我们用来生成随机整数-
randint()
randrange()
from random import randint, randrangeprint("Printing random integer ", randint(0, 20))
print("Printing random integer ", randrange(0, 20, 2))
输出结果
Printing random integer 15Printing random integer 4
从列表中随机选择一个项目
考虑我们有一个公司名称列表,我们想从该列表中检索一个项目(公司名称)。我们可以做到这一点,
import randomcompanies = ['RELIANCE', 'TCS', 'INFY', 'SBI', 'PNB','HDFC']
print('Randomly selecting company from a list: ', random.choice(companies))
输出结果
Randomly selecting company from a list: INFY
从列表中随机选择多个项目
考虑上面的示例,但是我们不想从一个列表中随机选择一个项目(公司),而是可以通过random.sample()函数实现这一点-
import randomcompanies = ['RELIANCE', 'TCS', 'INFY', 'SBI', 'PNB','HDFC']
print('Randomly selecting 3 companies from a list: ', random.sample(companies,3))
输出结果
Randomly selecting 3 companies from a list: ['TCS', 'RELIANCE', 'INFY']
但是,如果我们尝试选择的项目多于列表中的项目数,则会遇到ValueError-
输入-
random.sample(companies,20)
输出-
ValueError: Sample larger than population or is negative
从列表中选择多个随机项的另一种方法是– random.choices()。
import randomcompanies = ['RELIANCE', 'TCS', 'INFY', 'SBI', 'PNB','HDFC']
print('Randomly selecting 3 companies from a list: ', random.choices(companies,k=6))
输出结果
Randomly selecting 3 companies from a list: ['TCS', 'TCS', 'INFY', 'HDFC', 'INFY', 'TCS']
从上面的输出中可以看出,使用random.choices()方法可以从列表中获得重复项。
Python中的伪随机数生成器
伪随机数生成器通过对值执行某些运算来工作。通常,此值是生成器生成的先前数字。但是,第一次使用生成器时,没有先前的值。
import randomprint("Seed value 10: ") # Initialize seed value
random.seed(10)
for i in range(5):
print(random.randint(1,100))
print()
print("Seed Value 5: ") # this time we'll get different values
random.seed(5)
for i in range(5):
print(random.randint(1,100))
print()
print("Seed value: 10") # will get the same result, what we got initially
random.seed(10)
for i in range(5):
print(random.randint(1,100))
输出结果
Seed value 10:74
5
55
62
74
Seed Value 5:
80
33
95
46
89
Seed value: 10
74
5
55
62
74
从上面的示例可以看出,如果种子相同,那么它将生成第一个先前的值。每个种子值对应于给定随机数生成器的生成值的固定序列。
在python中生成加密安全的随机数
我们可以在python 3.x中生成一个加密安全的随机数。如果我们拥有python 3.6或更高版本,则可以使用新的secrets模块和下面的rand函数。它将生成一个低于指定值的随机数。
import secrets#generate 10 secure random numbers between 10 and 500
for x in range(0,10):
secV =10+ secrets.randbelow(500)
print(secV)
输出结果
464406
184
293
399
332
495
292
118
134
对于python 3.5或更低版本的另一种方法,我们可以使用random模块和SystemRandom类来生成加密安全的随机数,
import randomrandGen = random.SystemRandom()
for x in range(0,10):
secV = 10+ randGen.randint(0,499)
print(secV)
输出结果
374211
425
264
217
97
210
39
319
52
另一种方法是使用随机和秘密(以保护数据)模块。
import secretsimport random
secNum = random.SystemRandom().random()
print("secure number is ", secNum)
print("Secure byte token", secrets.token_bytes(16))
输出结果
secure number is 0.5205307353786663Secure byte token b'\x05T>\xacsqn0\x08\xc4\xf4\x8aU\x13\x9f\xcf'
以上是 在Python中生成随机ID 的全部内容, 来源链接: utcz.com/z/316515.html