我需要在23到72之间生成100个年龄值,平均值必须为42年。
您认为标准python中是否已存在此功能?如果没有,我认为我已经足够了解python并且应该能够对算法进行编码,但我希望有一些东西可供使用。任何提示?
答案 0 :(得分:1)
我认为你可以填充一个大小为100的数组,所有42个作为条目。
然后随机选择两个指数,检查它们的值,如果可以接受,则调整1。
我只是在这里猜测,但这就是我所做的,不确定分配到底是什么,但是平均值已经死了,并且看起来相当均匀地覆盖范围的值...对不起它很乱,但我只是想在离开工作之前把东西扔得很快!
def age_arr():
age_A = []
for _i in range(100):
age_A.append(42)
for _i in range(100000):
rand_ind_1 = randint(0,99)
rand_ind_2 = randint(0,99)
val_1 = age_A[rand_ind_1] #Subtract from
val_2 = age_A[rand_ind_2] #Add to
if val_1 == 23 or val_2 == 72:
age_A[rand_ind_1] += 1
age_A[rand_ind_2] -= 1
age_A[rand_ind_1] -= 1
age_A[rand_ind_2] += 1
sum = 0
for val in age_A:
sum += val
print(age_A)
print('Average: ' + str(sum/100))
输出:
[29, 27, 51, 68, 28, 40, 72, 42, 41, 31, 59, 46, 61, 52, 43, 26, 34, 29, 41, 23,
37, 27, 45, 23, 49, 43, 28, 24, 60, 43, 65, 57, 27, 46, 35, 52, 23, 34, 47, 39,
64, 52, 46, 48, 30, 27, 23, 30, 57, 34, 46, 26, 29, 30, 55, 72, 34, 52, 66, 38,
69, 34, 24, 40, 39, 59, 67, 39, 39, 26, 70, 36, 31, 50, 29, 59, 64, 52, 40, 33,
62, 32, 53, 41, 45, 24, 47, 27, 23, 39, 68, 24, 34, 36, 56, 36, 32, 49, 40, 26]
Average: 42.0
答案 1 :(得分:0)
是的,有。它是random.triangular(min, max, av)
。
您的平均值将接近,但不等于av。
编辑:见下面的评论,这有弊。