我正在编写一个排名算法,我想添加随机因素。
我正在生成一个包含 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/