0

我不想得到一个 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。

4

2 回答 2

3

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

文档说第一个参数是包容性的,第二个参数是独占性的。你正在返回一个int。您要求一个 int x,其中 1 <= x < 2。所以它唯一可以返回的是 1。

你真的应该打电话rnd.Next(0,events.Count),然后你只需要做events[which],而不是events[which-1]

于 2013-04-23T17:29:31.020 回答
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();
}
于 2013-04-23T17:27:33.683 回答