Problème de génération de nombre aléatoire nombre mystère [Résolu/Fermé]

Signaler
Messages postés
5
Date d'inscription
samedi 18 juin 2016
Statut
Membre
Dernière intervention
22 août 2016
-
Messages postés
4068
Date d'inscription
jeudi 18 août 2011
Statut
Membre
Dernière intervention
19 juin 2017
-
Bonjour,
Cela fait quelques temps que je me suis mis à la programmation en c# et j'ai tout d'abord commencé par créer un programme "le Nombre Mystère". Le but est que la machine doit nous faire deviner le nombre qu'elle a généré.
Jusque là tout va bien, mais c'est au moment ou je veux relancer une partie sans fermer la fenêtre console que le nombre aléatoire généré reste le même qu'a la première partie . Selon vous comment pourrai-je lancer indéfiniment des parties en générant à chaque fois un nouveau nombre et sans fermer l'application.
Voici mon code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            int randomed = new Random().Next(100) + 1;  //Création de Random
            


            Console.WriteLine("Choisi un nombre entre 1 et 100"); // écriture phrase


            int PickedNum = PickANumber();

            while (PickedNum != randomed) //Dédifinion du if else
            {

                if (PickedNum > randomed)
                {
                    Console.WriteLine("C'est moins!");
                }
                else
                {
                    Console.WriteLine("C'est plus!");
                }
                PickedNum = PickANumber();
            }
            
            youwin(randomed);
            NouvellePartie(randomed);
            Console.ReadKey();   
        }
        static void youwin(int randomed)
        {
            Console.WriteLine("Bravo ! Tu as trouvé le nombre était bien " + randomed); // sortie de boucle si randomed == PickedNum
           
        }
            static int PickANumber()
        {
            string Picked = Console.ReadLine(); // prise en compte de la réponse de l'utilisateur si c'est une lettre


            int PickedNum; // prise en compte si c'est un chiffre



            while (int.TryParse(Picked, out PickedNum) == false) // définition de la valeur booléenne
            {
                Console.WriteLine("Ce n'est pas un nombre rééssaie!");
                Picked = Console.ReadLine();
            }
            return PickedNum;
        }
        static void NouvellePartie(int randomed)
        {
            
            Console.WriteLine("Choisi un nombre entre 1 et 100"); // écriture phrase
            

            int PickedNum = PickANumber();

            while (PickedNum != randomed) //Dédifinion du if else
            {

                if (PickedNum > randomed)
                {
                    Console.WriteLine("C'est moins!");
                }
                else
                {
                    Console.WriteLine("C'est plus!");
                }
                PickedNum = PickANumber();
            }
            youwin(randomed);

            Console.ReadKey();
            NouvellePartie(randomed);
        }

    }
    }

3 réponses

Messages postés
5
Date d'inscription
samedi 18 juin 2016
Statut
Membre
Dernière intervention
22 août 2016

C'est bon je viens de trouver l'astuce! j'ai simplement fait

return new Random().Next(1,101);

qui définie ma variable "randomed" et ainsi se relance à chaque fin de partie !
Messages postés
14771
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 septembre 2020
577
Bonsoir, il faut initialiser ton random avec quelque chose qui change, en général, on utilise le Tick de DateTime.Now
Messages postés
5
Date d'inscription
samedi 18 juin 2016
Statut
Membre
Dernière intervention
22 août 2016

Merci beaucoup!
Messages postés
5
Date d'inscription
samedi 18 juin 2016
Statut
Membre
Dernière intervention
22 août 2016

Je viens d'effectuer quelques recherches, et avec mes maigres connaissances je ne vois pas comment initialiser Random. Je suppose qu'il faudrait instaurer DateTime.now lors de la déclaration de "randomed", mais je ne sais pas vraiment quel syntaxe aborder pour permettre la prise en compte de ce nouveau paramètre.
Messages postés
4068
Date d'inscription
jeudi 18 août 2011
Statut
Membre
Dernière intervention
19 juin 2017
643
please. Il faut juste générer une nouveau nombre, pas utiliser le temps comme graine !
Messages postés
14771
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 septembre 2020
577
Un truc comme ça
Random rnd = new Random((int)DateTime.Now.Ticks);