下载好了网站模板怎么开始做网站?,怎么创建一个空壳公司,模板手机网站建设公司,网页游戏手机怎么才可以玩我们写python代码的时候#xff0c;很少能用得上随机数#xff0c;但是随机数有很多妙用。例如#xff0c;在我们做测试数据集的时候#xff0c;可以构建一个随机的dataframe#xff1b; 或者在保存数据的时候#xff0c;可以在每条数据前插入一列作为#xff0c;不重…我们写python代码的时候很少能用得上随机数但是随机数有很多妙用。例如在我们做测试数据集的时候可以构建一个随机的dataframe 或者在保存数据的时候可以在每条数据前插入一列作为不重复的ID 字段使用为作为文件或数据块生成一个唯一的“指纹”用于快速识别或索引。可以根据需求来设置自己的数据“指纹”
以下是一些使用随机数的汇总
1、random模块的随机函数 random.random(): 返回一个[0, 1)范围内的随机浮点数。 random.uniform(a, b): 返回一个指定范围内的随机浮点数范围为[a, b] random.randint(a, b): 返回一个随机整数N使得a N b random.randrange(start, stop, step): 从指定范围内按指定基数递增的元素中随机选择一个类似于range函数。step 是步长,要求整数;当范围很大时生成随机数可能会比较慢。 random.choice(seq): 从非空序列x中随机选择一个元素 random.shuffle(): 用于将序列x中的元素随机打乱。 random.sample(population, k): 从总体population中随机抽取k个元素要求k len(population)。 以下是代码运行的部分
import randomprint(random.random()) #0.9478274870593494
print(random.uniform(4, 5)) #4.056551367726809
print(random.randint(6,10)) #6
print(random.randrange(1, 10, 2)) #5print(随机选择 100 以内一个偶数,random.randrange(0, 101, 2))
#随机选择 1 到 100 之间的一个偶数
print(随机选择 100 以内的一个奇数,random.randrange(1, 101, 2))print(random.choice([1,5,4,8,7,14])#从列表中抽一个数出来random.shuffle() 打乱列表my_list [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list) # 输出可能是 [1, 5, 3, 4, 2]每次输出可能不同#random.shuffle 不会返回新的序列而是就地修改传入的序列。
#由于 random.shuffle 修改的是原序列如果需要保留原始序列应该先复制一份序列然后再进行打乱操作。从列表中随机选择 2 个不重复的元素
items [Number1, Number2, Number3, Number4, Number5]
sample random.sample(items, 2)
print(sample)
#[Number5, Number4]2. 生成随机编码/字符串
用途可以用来生成不重复的随机id方便做数据库的管理
md5加密的各种函数 MD5是一种广泛使用的哈希函数它可以产生一个128位16字节的哈希值通常用一个32位的十六进制字符串表示。
可以使用的场景 A .生成数据唯一的id(重复率低比随机字符串靠谱) B .MD5 用来做存储用户密码的哈希值 C .一些网站的连接的加密方式是SSL/TLS通过使用非对称的 MD5加密来建立一个安全的连接随后使用对称加密来加密数据从而保护数据在客户端和服务器之间传输过程中的隐私和完整性。因此有时候在获取网站的request的时候在header/data甚至是网址的构建的时候也会用到
import hashlib #导入hash库函数def hash_UTF8(text): #基于UTF-8生成的md5加密ASCII编码:一个字节一共可以用来表示256种不同的状态 UTF-8是Unicode的实现方式之一 ,对应的编码是 \u9996\ 这种UTF8的BOM头为 0xEF 0xBB 0xBFUnicode大端模式为 0xFE 0xFFUnicode小端模式为 0xFF 0xFEmd5_result hashlib.md5(text.encode(encodingUTF-8)).hexdigest()return md5_resultprint(hash_UTF8(虚拟机柯尼卡)) #0c9a8ebe776ce41b1017e613a2d980cf def hash_GBK(text):#基于GBK生成的md5加密 GBK编码是对GB2312编码的扩展因此完全兼容GB2312-80标准 兼容汉字、图形等的编码 md5_result hashlib.md5(text.encode(encodingGBK)).hexdigest()return md5_result
print(hash_GBK(虚拟机柯尼卡」 Ⅷ Ⅸ 『 』 〖 〗 【 】 ‰ § № ☆ ★ △ ▲ ※ → ← ↑)) #70ad1b56a830a421d1740e37e6ebfe90def hash_GB2312(text): #基于GB2312生成的md5加密 汉字编码标准非ASCII编码 基于区位码 的汉字编码标准一般编码方式是0xA0区号0xA0位号。 md5_result hashlib.md5(text.encode(encodingGB2312)).hexdigest()return md5_resultprint(hash_GB2312(0xB0 0xB2)) #6ef23e84a2a6d9af087fc6f38425930cdef hash_GB18030(text):#基于GB18030生成的md5加密 GB18030是对GB2312的扩展其编码长度由2个字节变为1~4个字节 md5_result hashlib.md5(text.encode(encodingGB18030)).hexdigest()return md5_resultprint(hash_GB18030(∈(0142))) #b79d04b89ebe2b4e7767388ba3b7d71f基于UUID编码生成随机数
import uuid #通用唯一识别码def UUID_time():基于时间戳 return uuid.uuid1()
print(UUID_time()) #0fe9a715-f58b-11ee-92df-244bfe9a3ddddef uuid3(text):uuid3() 基于名字和MD5散列值,保证了同一命名空间中不同名字的唯一性 return uuid.uuid3(uuid.NAMESPACE_DNS,text)
print(uuid3(木卡姆0xBB)) #e7860c98-4ef8-30de-8adc-eebce41612a0 def uuid4():基于随机数,会重复。不常用 return uuid.uuid4()
print(uuid4()) #6467f0d7-1f49-4963-9a57-c6dfee8d2713
#重复概率2的128次方 分之一概率也很小def uuid5(text):基于名字和SAHI值,使用SAHI算法 若有名字的唯一性要求最好使用uuid3()或者uuid5()return uuid.uuid5(uuid.NAMESPACE_OID,text)生成随机字符串
import random
import stringdef randN(N):生成长度为 N的以串随机数 min pow(10, N - 1)max pow(10, N)return random.randint(min, max - 1)print( randN(5))#最后的结果是“49846” 数值是随机的可以生成目标长度的数字。def generate_random_string(length):生成32位的随机字符串字母和数字都可以 characters string.ascii_letters string.digitsreturn .join(random.choice(characters) for _ in range(length))这些方法可以单独使用也可以组合使用以满足不同的随机性需求。例如如果你需要生成一个随机的密码你可以结合使用random.randint和random.choice来生成一个包含数字和字母的字符串。
3.随机生成dataframe
import numpy as np
import random
newnp.random.randint(0,100, size[10,10])#从100个数内选出10列10行的随机数但是会重复
newnp.random.choice(100, size[10,10], replaceFalse)#从100个数内选出10列10行的随机数不会重复
print(new) 4. 随机生成队列
def No_Repeat_Queue(N,start,end): 生成从start-end的不重复队列数字长度为N个数最后返回的是集合用{}表示 random_numbers set()while len(random_numbers) N:number random.randint(start, end)random_numbers.add(number)return random_numbers
print(No_Repeat_Queue(10,-1,25))5. 随机生成列表
如果是想生成顺序乱的数组,可以使用random.sample生成不重复的列表
def No_Repeat_numbers(N,start,end):生成长度为N从start-end 中选出的 列表 No_Repeat_num random.sample(range(start, end), N)return No_Repeat_num
print(No_Repeat_numbers(10,1,101))
#选出从1-101的十个数
结果[7, 16, 47, 4, 19, 18, 25, 62, 61, 58]