You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#随机数存储与校验疑问及在线编译器刷新异常澄清

解决C#随机数“重复生成”的困惑:在线编译器刷新的锅!

先梳理你的核心困扰

你一开始的疑问是:想实现不重复的随机数生成,把生成的随机数存下来用于答案判断,但每次输入答案时,总觉得随机数被重新生成了——比如生成了44,你输入48后,不知道怎么调用之前的随机数来验证对错。

真相揭晓:代码本身完全没问题!

你后来澄清的关键点太重要了:问题出在你使用的在线编译器上——每次输入答案时编译器会自动刷新重启程序,导致你误以为循环生成的随机数集合被重新创建了。因为没有Visual Studio才选择在线编译器,这种场景完全能理解,不用抱歉~

附上你的参考代码

public static void Main() { 
    Random rand = new Random(); 
    int count, a, b, x, y; 
    Console.Write("Sequence: "); 
    count = int.Parse(Console.ReadLine()); 
    Console.Write("Minima: "); 
    x = int.Parse(Console.ReadLine()); 
    Console.Write("Maxima: "); 
    y = int.Parse(Console.ReadLine()); 
    int[] roll = new int[count]; 
    for(a = 0; a < count; a++){ 
        roll[a] = rand.Next(x, y); 
    } 
    Console.Write("( "); 
    foreach(var nr in roll){ 
        Console.Write(nr + " "); 
    } 
    Console.WriteLine(")"); 
    Console.WriteLine(""); 
    int[] answer = new int[count]; 
    for(b = 0; b < count; b++){ 
        Console.Write("{0}. Answer: ",b+1); 
        answer[b] =int.Parse(Console.ReadLine()); 
    } 
    Console.ReadLine(); 
}

额外小补充:添加答案判断功能

既然代码本身没问题,如果你想实现“对比输入答案和生成的随机数是否正确”,可以在最后加一段简单的对比逻辑,比如:

// 新增答案验证逻辑
Console.WriteLine("\n--- 答案验证结果 ---");
for(int i = 0; i < count; i++)
{
    bool isCorrect = answer[i] == roll[i];
    Console.WriteLine($"第{i+1}题:你的答案{answer[i]},正确答案{roll[i]} → {(isCorrect ? "✅ 正确" : "❌ 错误")}");
}

这段代码会遍历你存储随机数的roll数组,和输入答案的answer数组做逐一对比,只要程序不被编译器刷新重启,roll里的随机数就会一直保留,不会重新生成。

在线编译器小建议

如果之后还要用在线编译器练习,建议选那种支持持续会话的工具(也就是不会因为输入就重启整个程序的),这样就能避免这种误解啦~

内容的提问来源于stack exchange,提问作者Gabriel Angel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 18:02:30