gpt4 book ai didi

python - 如何在Python中选择独立加权的数字?

转载 作者:太空宇宙 更新时间:2023-11-03 19:55:45 24 4
gpt4 key购买 nike

import random

number=list(range(1,10))
weighted=[1]*2+[2]*2+[3]*2+[4]*2+[5]*2
number_weighted=random.choice(number,weighted,k=1) **#if k=4 then the same number is chosen sometimes**

我想循环3次来选择每个数字。

我想选择独立(不相同)、加权的数字。

在Python中,如果你知道这个问题,如果你教我,我将不胜感激

例如,数字=[1,2,3,4,5]加权=[0.1,0.1,0.4,0.3,0.1]然后选择两个数字我想要 3、4 概率)但 random.choice 函数有时会选择 1,1。

所以,我认为我取一个数字(假设是 3)数字=[1,2,4,5]加权=[0.1,0.1,0.3,0.1]我取一个数字(假设是 4)。使用循环函数

最佳答案

您的问题不太清楚,如果不能解决您的问题,请发表评论。定义从列表和权重中返回随机值的 functionn。另一个函数可以确保你有 n 个来自不同权重的随机数。

你的权重和数组的长度不同,我希望这是一个错误。

import random

def get_rand(num_list,weight_list,weight):
selection_from= [i for i,v in enumerate(weight_list) if v==weight]
print(selection_from)
rand_index =random.choice(selection_from)
return num_list[rand_index]

def get_n_rand(num_list,weight_list,n):
weights= list(set(weight_list))
random.shuffle(weights)
final_list=[]
# if you don't want numbers from same weight
for weight in weights[:n]:
final_list.append(get_rand(num_list,weight_list,weight))
#if same weight is also fine use this:
#for i in range(n):
# weight = random.choice(weights)
# final_list.append(get_rand(num_list,weight_list,weight))
return final_list


number=list(range(1,10))
weighted=[1]*2+[2]*2+[3]*2+[4]*2+[5]*1
assert(len(number)==len(weighted))
rand=get_n_rand(number,weighted,3)
print("selected numbers:",rand)
print("their weights:",[weighted[number.index(i)] for i in rand])

既然你很难理解,

selection_from= [i for i,v in enumerate(weight_list) if v==weight]

相当于:

selection_from= []
for i in range(len(weight_list)):
v= weight_list[i]
if v==weight:
selection_from.append(i)

关于python - 如何在Python中选择独立加权的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59549981/

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