2011-03-02 26 views
1

一個隨機整數字段值創建模型實例我有一個模型,如下所示:Django的:與平均達到指定數量

class RunnerStat(models.Model): 
    id_card= models.CharField(max_length=32) 
    miles = models.PositiveSmallIntegerField() 
    last_modified = models.DateField(auto_now=True) 

我想創建一個與平均高達隨機miles值幾個RunnerStat實例一個具體的數字。

我知道這可能涉及一些統計(分佈等)。有沒有人有任何指針?或者做了類似的事情,可以分享一些代碼?

:創建與平均出分至10

回答

1

如果平均值必須在給定的數字附近,但不是完全可以使用隨機模塊中的random.gauss(mu, sigma)。這將創建一個更自然的隨機值集合,其值爲mu的給定值的平均值(平均值),標準差爲sigma。越多跑步者越接近平均值就能達到理想值。

import random 

avg = 10 
stddev = 5 
n = random.gauss(avg,stddev) 
for r in range(100): 
    r = RunnerStat(miles=avg+n) 
    r.save() 

如果需要平均是確切的數字,那麼你總是可以創建一個亞軍(或更合理一些選手)是反平衡什麼都從你的平均電流差。

+0

明天我會試試。 – 2011-03-03 01:41:53

+0

@Nimmy Lebby爲你工作了嗎? – JHSaunders 2011-04-05 23:57:18

+0

對不起。是!感謝您的跟進,並對延遲選擇答案表示歉意。 – 2011-04-06 18:22:49

1

好東西來平均到一個特定號碼隨機miles值100名RunnerStat對象,他們需要添加到一個特定號碼。例如,如果您希望100個項目的平均值爲10,那麼自1000/100 = 10以來,100個項目需要加起來1000.

這樣做並非完全隨機的一種方法是生成一個隨機數字,然後減去並添加到您的平均值,生成兩個RunnerStat項目。

所以,你做這樣的事情(注意,這是從我的頭和未經測試):

import random 

avg = 10 

n = random.randint(0,5) 

r1 = RunnerStat(miles=avg-n) 
r2 = RunnerStat(miles=avg+n) 

r1.save() 
r2.save() 

當然填寫其他領域了。我只是把里程放在RunnerStats裏。缺點是你的RunnerStats必須是偶數。你可以寫它來傳遞一個數字,如果它是奇數,最後一個必須是你想要的平均數。