python⽣成随机整数取其平均值_在python中如何⽣成满⾜特
定均值和中值的随机数?...
⼀种使结果真正接近您想要的结果的⽅法是⽣成两个独⽴的随机范围,长度为100,满⾜您的中值约束,并包含所有期望的数字范围。然后通过连接数组,平均值将⼤约为12,但不完全等于12。但因为这只是意味着你要处理的,你可以简单地通过调整这些数组中的⼀个来⽣成你期望的结果。在In [162]: arr1 = np.random.randint(2, 7, 100)
In [163]: arr2 = np.random.randint(7, 40, 100)
In [164]: np.atenate((arr1, arr2)))
Out[164]: 12.22
In [166]: np.atenate((arr1, arr2)))
Out[166]: 6.5
下⾯是⼀个⽮量化的⾮常优化的解决⽅案,它通过限制随机序列的创建来对抗任何其他使⽤循环或python级别代码的解决⽅案:
^{pr2}$
演⽰:arr = gen_random()
dian(arr))
an())
6.5
12.0
函数背后的逻辑:
为了让我们有⼀个符合这个标准的随机数组,我们可以将3个数组连接在⼀起arr1,mid和{}。arr1和arr2各包含99个项⽬,mid包含2个项⽬6和7,因此最终结果为6.5作为中位数。现在我们创建两个长度为99的随机数组。要使结果具有12个平均值,我们需要做的就是出当前和与12 * 200之间的差,然后从我们的N个最⼤数中减去结果,在这种情况下,我们可以从arr2中选择它们并使⽤N=50。在
编辑:
如果在结果中使⽤浮点数不是问题,您可以实际缩短函数,如下所⽰:import numpy as np
import math
def gen_random():
arr1 = np.random.randint(2, 7, 99).astype(np.float)
arr2 = np.random.randint(7, 40, 99).astype(np.float)
mid = [6, 7]
i = ((np.sum(arr1 + arr2) + 13) - (12 * 200)) / 40
args = np.argsort(arr2)
arr2[args[-40:]] -= i
atenate((arr1, mid, arr2))python生成1到100之间随机数