python - 如何构建加权随机列表?

标签 python algorithm random

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

我正在生成一个包含 10 个项目的列表,其中每个项目的值介于 1 到 10 之间:

l = [random.randint(1,10) for num in range(1, 11)]

我运行此代码大约 400 次,并将大型列表存储在数据库中。

我想为其添加概率,因此 70% 的情况下,它会为前 5 个项目生成 1 到 5 之间的随机数,为后 5 个项目生成 5 到 10 之间的随机数。

并且 30% 的情况下它保持随机状态,没有任何概率(正常模式)。

如何使用 python 及其随机模块来实现此目的?

编辑:有些人认为这可能与 this question 重复。 ,但事实并非如此,因为我不想根据概率来选择项目,而是希望根据它们的权重进行分配。

最佳答案

以下将生成所需的随机列表:

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

您可以调用它 400 次:

lists = [next_random_list() for i in range(400)]

关于python - 如何构建加权随机列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41526174/

相关文章:

algorithm - 概率文件验证——算法还是库?

javascript - 完全旋转和随机化所有 DOM 元素

c - 用数字从数组中打乱数字 - C

python - 使用 ORM django 选择 (select ..)

python - 如何在 Carla 上实现变道操作

c - 如何解决 C : 'can' t find a register in class 'GENERAL_REGS' while reloading 'asm' ' 中的内联汇编错误

python - tf.random.categorical 给出奇怪的结果

python - SQlite UPDATE WHERE语法错误

python - 根据定义操作的第三个列表对两个列表的 Sum OR average OR max 元素

algorithm - 逐年返回至单期返回