Random.Next()始终返回相同的值

时间:2013-04-23 17:26:22

标签: c#

我不想得到一个ArrayList的随机实例,但我的代码总是返回相同的值。

public static void randomEvent(){
            Random rnd = new Random();
            int which = rnd.Next(1,events.Count);
            Debug.WriteLine("Which event: " + which);
            Debug.WriteLine("Count Events: "+ events.Count);
            ((Event) events[which-1]).write();
        }

events.Count的大小是2。

2 个答案:

答案 0 :(得分:3)

如果events.Count为2,那么您正在调用rnd.Next(1,2)

documentation表示第一个参数是包含性的,第二个参数是独占的。而你正在返回一个int。你要求一个int x,其中1< = x<所以它唯一可以归还的是1.

您应该真正致电rnd.Next(0,events.Count),然后您只需要events[which],而不是events[which-1]

答案 1 :(得分:2)

Random rnd = new Random();移到randomEvent()方法之外。

private static Random rnd = new Random();

public static void randomEvent(){
    int which = rnd.Next(1,events.Count);
    Debug.WriteLine("Which event: " + which);
    Debug.WriteLine("Count Events: "+ events.Count);
    ((Event) events[which-1]).write();
}