我不想得到一个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。
答案 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();
}