我想寫一個隨機函數,返回一個隨機數,它不同於它返回的最後5個不同的數字。如何創建一個每次都返回不同值的隨機函數?
我在Excel VBA中使用非常simular代碼:
Function Rand(ByVal Low As Long, ByVal High As Long) As Long
Randomize
Num3 = Num2
Num2 = Num1
Rand = Int((High - Low + 1) * Rnd) + Low
Num1 = Rand
Do While Num1 = Num2 Or Num1 = Num3 Or Sheets(Csheet).Cells(Num1, 3) > 20
Rand = Int((High - Low + 1) * Rnd) + Low
Num1 = Rand
Loop
End Function
數量也需要檢查,在希伯來書[I] .Known字是假的。 我想這一個:
private int Rand(int Min, int Max)
{
int i;
int x = 0;
Random rnd = new Random();
oldNum[3] = oldNum[2];
oldNum[2] = oldNum[1];
oldNum[1] = oldNum[0];
do
{
i = rnd.Next(Min, Max);
x++;
}
while (Heb[i].Known==false && x<10000 && oldNum.Contains(i));
oldNum[0] = i;
return i;
}
儘管如此,它似乎doesen't合作過好...返回每次0。
Min和Max是在它從randomises列表的區域(應爲1之間-30) 希伯來是列表中的項目的數目(約500 - 1000項) 我初始化oldNum用:
int[] oldNum = new int[3];
Random()類有什麼問題? – 2012-04-28 15:49:37
它做了什麼,你沒有想到? – BrokenGlass 2012-04-28 15:50:43
Ehm,如果每個數字都必須與前五個數字不同,那麼它就不應該是隨機的!無論如何,每當你需要一個新的隨機數時,你的例子就會給隨機數生成種子,而這種方法效果不好。使'rnd'靜態並只調用一次'Random'函數。 – 2012-04-28 15:52:29