gpt4 book ai didi

python-3.x - 从给定的 n 个元素数组中随机选择一个数字,概率与其大小成正比

转载 作者:行者123 更新时间:2023-12-02 03:10:06 25 4
gpt4 key购买 nike

示例 1:A = [0 5 27 6 13 28 100 45 10 79]设 f(x) 表示 x 在 100 次实验中被选中的次数。f(100) > f(79) > f(45) > f(28) > f(27) > f(13) > f(10) > f(6) > f(5) > f(0)

我的代码:

def pick_a_number_from_list(A,l):
Sum = 0
#l = len(A)
for i in range(l):
Sum+=A[i]
A_dash = []
for i in range(l):
b=A[i]/Sum
A_dash.append(b)
#print(A_dash)
series = pd.Series(A_dash)
cumsum = series.cumsum(skipna=False)
#print(cumsum[9])

sample_value = uniform(0.0,1.0)
r = sample_value
print(r)
#for i in range(l):
if r<cumsum[1]:
return 1
elif r>cumsum[1] and r <cumsum[2]:
return 2
elif r<cumsum[3]:
return 3
elif r<cumsum[4]:
return 4
elif r<cumsum[5]:
return 5
elif r<cumsum[6]:
return 6
elif r<cumsum[7]:
return 7
elif r<cumsum[8]:
return 8
elif r<cumsum[9]:
return 9


def sampling_based_on_magnitued():

A = [0,5,27,6,13,28,100,45,10,79]
n = len(A)
#for i in range(1,10):
num = pick_a_number_from_list(A,n)
print(A[num])

sampling_based_on_magnitued()

在 mu 代码中,我使用了多个 if else 语句,因为它是硬编码的我可以通过 o/p 直到列表中的 10 个元素。我想让我的代码针对列表中的任何值都是动态的。

在我的代码中,我将其限制为 n=10

请告诉我如何修改可以用 for 循环替换所有 if - elseif 语句的泛型代码

最佳答案

sum1=0;
for i in A:
sum1+=i;
x=0
list1=[]
for i in A:
list1.append(x+i/sum1)
x=x+i/sum1;
#list1 contsins cumulative sum
bit=uniform(0,1)
for i in range (0,len(list1)):
if bit<list1[i]:
return A[i]

你可以用这个

关于python-3.x - 从给定的 n 个元素数组中随机选择一个数字,概率与其大小成正比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57892112/

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