python - 从元组生成随机列表,但能够选择每个项目的百分比
问题描述
我想从两个项目('是','否')中生成一个长度为 10000 的列表。我拥有的代码就是这样做的。问题是,它产生了约 50% 的肯定和 50% 的否定。如何修改此代码,以便我可以设置它选择是的时间百分比。假设我想要 36.7% 的时间。然后它应该在剩余的 63.3% 时间中选择剩余的“否”。代码如下:
import random
category = ('yes','no')
length_of_field = 10000
print(length_of_field)
print(type(category))
category_attribute = [random.choice(category) for _ in range(length_of_field)]
print('\ncategory:')
print(len(category_attribute))
print(type(category_attribute))
from collections import Counter
a= Counter(category_attribute).keys()
b= Counter(category_attribute).values()
print(a,b)
解决方案
import numpy as np
alist = np.random.choice(["No","Yes"], 1000, p=[0.633, 0.367])
内置
import random
alist = random.choices(["no", "yes"], weights=[0.633, 0.367], k=1000)
或者
def generate_some_dist(p, n):
'''
p: 0~1, proba to generate yes
n: size
'''
a = []
for i in range(n):
if random.random() <= p:
a.append("yes")
else:
a.append("no")
return a
a = generate_some_dist(.367, 10000)
或者
p = 0.367
n = 1000
a = ["yes" if random.random() <= p else "No" for _ in range(n) ]
推荐阅读
- c# - 将动态 Json 转换为更具体的东西
- base64 - 通过 REST API documentBase64 附加记录错误 - 即使是小文件
- android - 如何设置动态文本以从自定义键盘编辑文本
- javascript - 如何将 jQuery 添加到 VuePress 文件中
- c# - 如何透视列表
并在不使用 DataTable 的情况下分配给 GridView? - python - This issue about compile keras model
- python - IPython 在第一个换行符后结束缩进块的输入
- java - git忽略Android Studio中的特定java类
- php - 向 Woocommerce 添加具有固定费用的百分比费用
- android - 如何从导航栏中删除后退按钮?