我想写一个随机函数,返回一个随机数,它不同于它返回的最后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