写点 我平时咋取随机数的代码,情景如下:1.已知某些确定好的元素,再随机取 2.不知道有哪些元素,只知 某个范围 比如 50-100,来进行取值。
个人博客:https://blog.csdn.net/zyooooxie
实现的思路有很多,我只是挑选了自己熟悉的。
元素确定时 随机
‘真’ 随机
挑选一个元素 random的 choice()
import random
# 从序列的元素中随机挑选一个元素
a = [1, 23, 213, 132, 41, 111, 'csdn', 'zyooooxie']
print(random.choice(a))
a.clear()
# print(random.choice(a)) # 报错 IndexError: Cannot choose from an empty sequence
挑选N个元素
我想得 比较简单: 随机排序后,取前N个元素【假设N 为 15】
a = [1, 1, 1, 1, 23, 213, 1322, 41, 111, 'zyoo1111ooxie', 'zyooooxie', 213, 1323, 213, 'zyooooxie', 'zyooooxie', 'zyooooxie', 1322, 41, 111, 'csdn', 'zyooooxie']
print(a)
random.shuffle(a)
print(a)
num = 15
print(a[:num])
有概率
生成1个 amount_list numpy的 random.choice()
import numpy as np
total_number = 100000
amount_choice = ['5', '10', '15', '20', '25', '30']
amount_probability = ['0.13', '0.21', '0.64', '0.01', '0.005', '0.005']
amount_list = np.random.choice(a=amount_choice, p=amount_probability, replace=True, size=total_number)
print([list(amount_list).count(a) for a in amount_choice])
数据量大些, 可以看得出的结果(的概率)
生成1个 amount
【直接更改 total_number = 1】,这儿 再看下 取值数量少时的 取值概率
import numpy as np
amount_list = list()
amount_choice = ['5', '10', '15', '20', '25', '30']
for i in range(100000):
total_number = 1
amount_probability = ['0.13', '0.21', '0.64', '0.01', '0.005', '0.005']
amount = np.random.choice(a=amount_choice, p=amount_probability, replace=True, size=total_number)
amount_list.append(amount)
print([amount_list.count(a) for a in amount_choice])
元素不确定时 随机
假设 取值范围为50-100,不使用概率
生成1个 浮点数
print(random.uniform(50, 100))
import numpy as np
abc = np.random.uniform(50, 100)
print(abc, type(abc))
特殊情况 在[0,1)范围内的:
print(random.random())
import numpy as np
print(np.random.random_sample(size=None))
print(np.random.random(size=None))
print(np.random.ranf(size=None))
print(np.random.sample(size=None))
生成1个 整数
print(random.randint(50, 100))
import numpy as np
print(np.random.randint(50, 100))
生成 N个整数
【假设N 为 15】
元素不重复
print(random.sample(range(50, 100), 15))
元素会重复
import numpy as np
print(np.random.randint(50, 100, size=15).tolist())
生成 N个浮点数
【假设N 为 15】
import numpy as np
print(np.random.rand(15) * (100 - 50) + 50)
交流技术 欢迎+QQ 153132336 zy
个人博客 https://blog.csdn.net/zyooooxie