首页 > 解决方案 > 为什么我生成的随机数在 .NET Fiddle / dotnetfiddle 中不断变化?

问题描述

这是我的代码:

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也会发生变化。

为什么随机数会不断变化?

标签: c#random.net-fiddledotnetfiddle

解决方案


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

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

.NET Fiddle 的工作方式对我来说是未知的,但它可能会在每个输入的请求中发送控制台输出,以某种方式在服务器端更改先前的输出,然后让您产生代码在输入后运行输入的错觉。

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

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

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

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

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


推荐阅读