我正在编写排名算法,我想添加随机因素。
我生成了10个项目的列表,其中每个项目的值从1到10:
l = [random.randint(1,10) for num in range(1, 11)]
我运行此代码大约400次,并将大型列表存储在数据库中。
我想增加它的概率,因此70%的时间它会产生前5个项目的1到5之间的radom数字,以及最后5个项目的5到10之间的数据。
并且有30%的时间没有任何概率地保持随机(正常模式)。
如何使用python及其随机模块实现这一目标?
修改:有些人认为这可能与this question重复,但它有'不是,因为我不打算根据概率选择项目,而是希望根据他们的权重进行分配。
答案 0 :(得分:3)
以下将生成所需的随机列表:
- hosts: ec2_tag_role_cassandra_db_seed_node
tasks:
- name: Your tasks...
你可以调用它400次:
import random
def next_random_list():
# With 70% probability
if random.randint(1, 10) <= 7:
# Generate 5 random elements from 1 to 5
a = [random.randint(1, 5) for _ in range(5)]
# Generate 5 random elements from 5 to 10
b = [random.randint(5, 10) for _ in range(5)]
# Concatenate them
return a + b
else:
# Return just a random list of 10 numbers from 1 to 10
[random.randint(1, 10) for _ in range(10)]