2016-09-05 3 views
0

gammavariateから数値を描きたいが、上限を設定したい。 これはなぜ機能しないのですか?ランダムなガンマ値の結果を上限に切り捨てる

import random 
[int(random.gammavariate(3, 3)) if x < 21 else 20 for x in range(1)] 

Out[59]: [22] 

ありがとう。

+0

何をしたいことがありませんと仮定していますが、期待している出力は何ですか? – BPL

+0

私はPythonのエキスパートではありませんが、x <21を評価するとき、xは明確に定義されていますか? – Bathsheba

+0

数値が20以下の場合 –

答えて

1

なぜ物を作るのですかcomplicated

xは、リストの理解度では常に0です。

このようにそれを試してください:あなたが特定の範囲内gamma distribution [0-20]以下のランダムな値をクランプしたい私が正しく理解している場合

x = int(random.gammavariate(3,3)) 
[x if x < 21 else 20] 
0

、あなたはこのようにそれを行うことができます:

あなたの例では
import random 


def clamp(x, min_value, max_value): 
    return max(min(max_value, x), min_value) 

min_value, max_value = 0, 20 
print([clamp(int(random.gammavariate(3, 3)), min_value, max_value) 
     for v in range(1)]) 

、あなたはXの代わりにあなたのランダムなガンマ値のインデックスを使用していた、私はあなたが

関連する問題