在10-20范围内,返回15的可能性是两种极端的两倍。
答案 0 :(得分:9)
答案 1 :(得分:1)
尝试看看它是否有效(对不起,如果它不可读):
import random
def randIntWeight(min, max):
distanceFromMedian = random.uniform(0, (max - min) / 2.0)
return (max - min) / 2.0 + distanceFromMedian * (-1) ** (random.randrange(-1, 0))
我还在琢磨我的概率论,所以请纠正我,如果这不对。
答案 2 :(得分:0)
正如Blender所指出的,你真的需要更加具体。但在最简单的情况下,您可以从统一变量生成Triangular Distribution。
答案 3 :(得分:0)
另一个内置函数是[numpy.random.normal][1]
numpy.random.normal(loc = 0.0,scale = 1.0,size = None)
从正态(高斯)分布中抽取随机样本。
您可以指定loc = 15.0来设置平均值,将scale = 2设置为5以使可能值的范围变窄或变宽。标度是可能的平均值的标准偏差数+/-(15)。它不允许您定义特定范围,但是如果输出超出某个范围,则始终可以将其输出并重新滚动。这为您提供了一种更细微的方式来获取特定值附近的值。
设置size=None
以返回一个值。
来自https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.random.normal.html
mu, sigma = 0, 0.1 # mean and standard deviation
s = np.random.normal(mu, sigma, 1000)
... (see link below for full code)
plt.show()