2つの値と特定の平均の間に乱数を生成する方法はたくさんあります。 Pythonには、これらの方法のいくつかのためのメソッドが組み込まれていますが、多くの方法があると言えば、私はそれを意味します。
最も簡単な方法は、三角分布を使用することです。 random.triangular(low, high, mode)
は、指定されたモードで、低と高の間の分布から数値を生成します。これは十分に良いかもしれませんが、あなたが本当に平均をしたい場合は、次の機能を使用することができます:あなたがより複雑な取得したい場合は、あなたがrandom.beta(alpha,beta)
を呼び出すことにより、ベータ分布を使用することができ
def triangular_mean(low, high, mean):
mode = 3 * mean - low - high
return random.triangular(low, high, mode)
。これらは本当に柔軟で非常に奇妙です。 Wikipediaのこの画像は、どれほど奇妙であるかを強調しています。 
ベータ分布の平均はalpha/(alpha+beta)
あり、結果はそうのは、この機能でそれをラップさせ、あなたのユースケースにそれをスケールアップするために、0と1の間で常に:
def beta_mean(low, high, mean, alpha):
offset = low
scale = high - low
true_mean = (mean - offset)/scale
beta = (alpha/true_mean) - alpha
return offset + scale * random.beta(alpha, beta)
で上記の関数では、alphaは平均値を変更することなく分布の形状を変更します。分布の中央値、モード、分散、および他の特性を変更します。
あなたのユースケースに合わせて関数をラップすることができる他のディストリビューションもありますが、私は上記の2つがあなたの好きなユースケースに合うと推測しています。
これらも浮動小数点数を生成するので、整数を必要とする場合は、関数を編集するか、呼び出した後に明示的にキャストするかのいずれかで整数にキャストする必要があります。
どのように配布するのですか?ガウス? – Alfe
固定平均の乱数の可能な複製(https://stackoverflow.com/questions/25761998/random-number-with-fixed-average) –
完全にランダムに生成し、平均を計算し、最後にそれらをシフトする方法はありますか希望の結果を得るには? –