如何构建加权随机列表?

时间:2017-01-07 20:26:54

标签: python algorithm random

我正在编写排名算法,我想添加随机因素。

我生成了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重复,但它有'不是,因为我不打算根据概率选择项目,而是希望根据他们的权重进行分配。

1 个答案:

答案 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)]