我必須生成一個隨機數列表,他們必須有一個給定的平均差。例如,給定的平均差是10,所以這些數字是好的:1 3 5 9 15 51
。我所做的是將給定的平均差乘以2並加1.像這樣:生成具有一定平均差的隨機數列表
while (i <= 50000)
{
i += Math.random() * givenAverageDiff * 2 + 1;
list.add(i);
}
但是我永遠不會得到5000或更多。事實上,它始終是4,850或更少。爲什麼?假設givenAverageDiff
是10.我的錯誤是什麼?我該如何解決它?
P.S.用C或PHP實現對我來說也是很好的。
什麼是「平均差異」? – 2013-04-22 17:23:02
我不知道是否有類型轉換搞東西。我假設'我'是一個'int'。 'givenAverageDiff'是'int'還是'double'? – 2013-04-22 17:23:59
@Eddy_Em我認爲這意味着M項的序列正在增加,並且對於n = 0到M-1 =(avg_difference)*(M-1)的總和(i_n + 1-i_n)。我不明白你如何保證這一點,並保持任何隨機性的外表。 – 2013-04-22 17:27:17