调试没有断点的代码时的错误
本文关键字:代码 错误 断点 调试 | 更新日期: 2023-09-27 17:52:53
我得到一个bug,我调用两个整数随机生成由相同的方法,但他们总是返回相同的数字时,在调试模式下释放代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kortspil
{
public class Kort
{
public int FåKortNummer()//Get card number
{
System.Random KortNummer = new System.Random();
int kort = KortNummer.Next(1, 14);
ErKortTrukket(kort);//is drawn
return kort;
}
}
class Program
{
static void Main(string[] args)
{
Kort SpillerEt = new Kort();
Kort SpillerTo = new Kort();
int SpillerEtKort = SpillerEt.FåKortNummer();//random number 1
Console.WriteLine("Spiller et har trukket: " + SpillerEtKort.ToString());
int SpillerToKort = SpillerTo.FåKortNummer(); // random number 2
Console.WriteLine("Spiller to har trukket: " + SpillerToKort.ToString());
if (SpillerEtKort <= SpillerToKort)
{
Console.WriteLine("Spiller Et vandt denne runde");//player 1 won this round
}
else
{
Console.WriteLine("Spiller to vandt denne runde");//player 2 won this round
}
Console.WriteLine("Tryk Enter for at lukke...");
Console.ReadLine();
}
}
}
您的问题是您正在创建两个不同的Random
实例。默认情况下,如果不提供种子号,将使用当前时间作为种子。然而,你的代码执行得如此之快,以至于同样的时间被用作种子(因为你的代码比时钟的最小分辨率执行得更快),所以你每次收到的数字是相同的。
最好的修复方法是只创建一个Random
实例。例如,您可以将代码更改为:
public class Kort
{
public static System.Random KortNummer = new System.Random();
public int FåKortNummer()//Get card number
{
int kort = KortNummer.Next(1, 14);
ErKortTrukket(kort);//is drawn
return kort;
}
}