【问题标题】:Why does my random number generated keep changing in .NET Fiddle / dotnetfiddle? [duplicate]为什么我生成的随机数在 .NET Fiddle / dotnetfiddle 中不断变化? [复制]
【发布时间】:2021-10-10 20:19:22
【问题描述】:

这是我的代码:

using System;
using System.Collections.Generic;
                
public class Program
{
    public static void Main()
    {
        Random r = new Random();
        int Winner = r.Next(1, 10);
        bool win = false;
    
        while (win == false)
        {
            Console.WriteLine("Welcome to the game!! Please guess a number between 0 and 10. It is " + Winner + " to win!");
            int Guess = int.Parse(Console.ReadLine());
        
            if (Guess == Winner)
            {
                Console.WriteLine("Well done! " + Guess + " is correct!!");
                win = true;`enter code here`
            }
            else if (Guess > Winner)
            {
                Console.WriteLine("Guess lower!!");
            }
            else if (Guess < Winner)
            {
                Console.WriteLine("Guess higher!!");
            }
        
        }
    
    }
}

逻辑有效,但随机整数在每次循环时都会发生变化。

你可以在这里看到这个:https://dotnetfiddle.net/vNrvho

每次循环&Console.WriteLine("Welcome to the game!! Please guess a number between 0 and 10. It is " + Winner + " to win!") 再次运行时,前一个Console.WriteLine 中的随机数也会改变。

为什么随机数一直在变化?

【问题讨论】:

  • Console.WriteLine("欢迎来到游戏!请猜一个0到10之间的数字。赢了是"+Winner+"!"); - 你显示数字,然后你猜猜??
  • @KamranMammadov 是的,只是为了测试。我已经知道这个数字是多少,但这个数字一直在变化。
  • 这是一个无效的问题 - 随机数根本不会改变,如果您的代码是上面的代码,这实际上是不可能的
  • @ErmiyaEskandary 所以它要求我输入一个数字,并告诉我答案是 8。我输入 7,故意弄错了答案。它告诉我猜得更低。循环再次循环,但这次它告诉我答案是两个。

标签: c# random .net-fiddle dotnetfiddle


【解决方案1】:

这不是您的代码的问题,而是 .NET Fiddle 的问题。

您还可以在此处的另一个 fiddle 中看到相同的问题,它执行类似的操作:https://dotnetfiddle.net/Mn7mtT

我不知道 .NET Fiddle 的工作方式,但它可能会在每个输入的请求中发送控制台输出,以某种方式在服务器端更改先前的输出,然后给你一个 错觉代码在输入后运行输入。

但是,它不是&它一次又一次地运行整个代码。

这当然会产生不同的随机值,并让您认为Winner 的值每次都在变化,而实际上并非如此。

通过在每次输入新数字时注意 Last Run: 值的变化或通过在 .NET Fiddle 之外本地运行代码来验证这一点。

在 .NET Fiddle 中发生这种情况无论项目类型或编译器设置如何

教训是不要总是相信 .NET Fiddle!

【讨论】:

  • @Luke 我可以确认这个答案(因为我是开发人员之一)。这不是错误,更像是意图行为,因为我们需要所有用户输入(我们可能不知道)。所以每次当用户给出新的输入时,我们都必须重新执行代码(已经输入的输入)
猜你喜欢
  • 2011-05-21
  • 1970-01-01
  • 2018-11-23
  • 2021-02-07
  • 1970-01-01
  • 2012-04-25
  • 2010-10-30
  • 2023-03-30
  • 2011-09-02
相关资源
最近更新 更多