调试没有断点的代码时的错误

本文关键字:代码 错误 断点 调试 | 更新日期: 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;
    }
}