0

I am new to c# and I am doing a random number generator and I need it to rerun when the user types the letter "j". I succeeded in that but when its rerun its the same number all the time. Can you help me figure out how :) This is what I have tried, so please give me ideas to resolve this problem.

        static void Main(string[] args)
        {
            // Deklaration av variabler
            int min = 1;
            int max = 20; //Jag skapade en min och max för vad jag förstår det som så är "Next" mellan 0 och Int.MaxValue vilket är alldeles för mycket.
            Random slumpat = new Random(); // skapar ett random objekt
            int speltal = slumpat.Next(min, max); // anropar Next metoden för att skapa ett slumptal mellan 1 och 20
            int rättTal = speltal;
            // läs på, vad är overload metoder? https://msdn.microsoft.com/en-us/library/system.random.next(v=vs.110).aspx
            bool spela = true; // Variabel för att kontrollera om spelet ska fortsätta köras
            
            string igen = "";
            

            while (spela) // Här tog jag bort "!" för att programmet avslutades vilket får mig att anta att den betyder att "någonting" är falskt. I detta fallet är "någonting" "spela"
            {

                int check = 0;

                Console.Write("\n\tGissa på ett tal mellan 1 och 20: ");

                Int32.TryParse(Console.ReadLine(), out int tal); //Det fanns ingen felsökningsmetod för om de inte skrev en siffra, därför gjorde jag detta.

                if (tal < speltal)
                {
                    Console.WriteLine("\tDet inmatade talet " + tal + " är för litet, försök igen.");
                    
                }

                if (tal > speltal)
                {
                    Console.WriteLine("\tDet inmatade talet " + tal + " är för stort, försök igen.");
                    
                }

                if (tal == speltal) //Jag ändrade "=" till "==" på grund av att det ska vara lika med och inte en jämförelse.
                {
                    Console.WriteLine("\tGrattis, du gissade rätt! Tryck på valfri knapp för att fortsätta.");
                    Console.ReadLine();
                    Console.Clear();
                    check = 1;
                }

                

                if (check == 1)
                {
                    Console.WriteLine("\tVill du spela igen? (j/n): ");
                    igen = Console.ReadLine();
                    Console.Clear();

                    if (igen == "j")
                    {
                        continue;
                    }
                    if (igen == "n")
                    {
                        break;
                    }
                }
            }
        }
    }
}

  • 6
    You have to use `slumpat.Next` in the loop to get a new random number. But leave the initialization of the random instance where it is, outside of the loop. Otherwise you will have the same issue as someone else few minutes ago: https://stackoverflow.com/questions/73820494/c-sharp-random-method-returns-consecutively-repeated-values – Tim Schmelter Sep 22 '22 at 21:32
  • The random number generator use the machine times to create a random number. You can get the same random number if you call the generate twice in a row very quickly (before the time tick changes every 100ns) but this doesn't happen EVERY time. So your min and max number must be the same number (or one apart). Change your min and max so they are correct. – jdweng Sep 22 '22 at 21:57

0 Answers0