c# - 为什么我生成的随机数在 .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
也会发生变化。
为什么随机数会不断变化?
解决方案
这不是您的代码的问题,而是 .NET Fiddle 的问题。
您还可以在此处的另一个小提琴中看到相同的问题,它执行类似的操作:https ://dotnetfiddle.net/Mn7mtT
.NET Fiddle 的工作方式对我来说是未知的,但它可能会在每个输入的请求中发送控制台输出,以某种方式在服务器端更改先前的输出,然后让您产生代码在输入后运行输入的错觉。
然而,它不是&它一次又一次地运行整个代码。
这当然会产生不同的随机值,并让您认为 的值Winner
每次都在变化,而实际上并非如此。
Last Run:
通过在每次输入新数字时注意变化的值或通过在 .NET Fiddle 之外本地运行代码来验证这一点。
无论.NET Fiddle中的项目类型或编译器设置如何,都会发生这种情况。
教训是不要总是信任 .NET Fiddle!
推荐阅读
- javascript - 更新到r131后环境贴图影响场景光照
- flutter - 有没有办法将 ontap 函数添加到 bottomNavigationBar?
- ipaf - Windows 7 的 PAF 安装
- asp.net - 如何在视图中使用 ASP.NET Core 在 @foreach 循环中获取迭代数
- c# - C# 源代码生成器不包括来自项目参考的结果
- kotlin-multiplatform - 在集成到 iOS 的 Xcode 中时,在 Kotlin Multiplatform 移动设备上的网络调用所花费的时间大约是原生的 6-7 倍
- javascript - 使用 JavaScript 事件间接更改播放按钮样式
- facebook - 无法触发 facebook webhook 测试
- c# - 无法隐式转换类型错误:例如。基本进程
= 新的 DeriveProcess1() - corda - 用于传入和传出消息的中间 Corda 节点