Random.Next()总是返回相同的值

本文关键字:返回 Next Random | 更新日期: 2023-09-27 18:10:45

我不想得到一个随机的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();
        }

事件大小。

Random.Next()总是返回相同的值

如果events.Count = 2,那么您正在呼叫rnd.Next(1,2)

文档中说第一个参数是包含的,第二个参数是排他的。你返回一个整型。你要求的是一个int型x其中1 <= x <2. 所以它唯一能返回的是1。

你应该真正调用rnd.Next(0,events.Count),然后你只需要做events[which],而不是events[which-1]

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();
}