gpt4 book ai didi

python - 从 Random.choices 函数获取唯一项目的列表

转载 作者:行者123 更新时间:2023-12-01 01:11:43 25 4
gpt4 key购买 nike

我有一种方法,使用随机包以一定的概率生成列表,例如:

import random

seed = 30
rand = random.Random(seed)
options_list = [1, 2, 3, 4, 5, 6]
prob_weights = [0.1, 0.2, 0.1, 0.05, 0.02, 0.06]
result = rand.choices(option_list, prob_weights, k=4) # k will be <= len(option_list)

我的问题是 result 可以容纳两个相同的项目,并且我希望它是唯一的。

我可以使 k 参数变得更大,然后过滤掉唯一的项目,但这似乎是错误的方法。我查看了文档,但没有看到选择函数获取这种参数。

有什么想法如何配置随机以返回唯一项目列表吗?

最佳答案

您可以使用np.random.choice ,它允许您分配与每个条目相关的概率,还可以生成无替换的随机样本。然而,概率之和必须为 1,您必须将向量除以其 L^1-Norm。所以你可以这样做:

import numpy as np
options_list = np.array([1, 2, 3, 4, 5, 6])
prob_weights = np.array([0.1, 0.2, 0.1, 0.05, 0.02, 0.06])
prob_weights_scaled = prob_weights / sum(prob_weights)
some_length = 4

np.random.choice(a=options_list, size=some_length, replace=False, p=prob_weights_scaled)

输出

array([2, 1, 6, 3])

关于python - 从 Random.choices 函数获取唯一项目的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54805175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com