2011-03-31 72 views

回答

7

您可以使用random.triangular()與Python> = 2.6:

n = random.triangular(10, 20) 

n將是一個浮點值,所以你需要將其轉換爲int

+0

+1沒有發明一個複雜的功能! – Blender 2011-03-31 16:34:06

+0

完美。謝謝。 – 2011-03-31 16:39:36

+0

嗯,說實話,我認爲這是不正確的。你將有一個三角形的概率函數,但是要求中值是極值的兩倍的概率給了額外的約束。你不需要一個三角形的PDF,而是一個「房子形」的一個..在(min,max)中具有值「x」的均勻PDF和在(min,max)中的三角形PDF的總和,其中P(min +(max-min)/ 2)='x',當然還有約束 - 這個PDF在R上的積分是1. – 2011-03-31 17:04:46

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)) 

我仍然對我的概率論刷牙,所以糾正我,如果這是不對的。

+0

這將返回0到5之間的浮點數。 – 2011-03-31 16:37:49

+0

這不起作用,您必須在返回的值中添加'min'。此外,它返回一個浮點數,函數名稱不是很清楚。 (sh * t多麼挑剔我的聲音-_-) – 2011-03-31 16:42:11