Problème de génération de nombre aléatoire nombre mystère

Résolu/Fermé
bountybob261 Messages postés 5 Date d'inscription samedi 18 juin 2016 Statut Membre Dernière intervention 22 août 2016 - Modifié par teutates le 18/06/2016 à 20:54
Sugel Messages postés 4068 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017 - 19 juin 2016 à 14:38
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

bountybob261 Messages postés 5 Date d'inscription samedi 18 juin 2016 Statut Membre Dernière intervention 22 août 2016
19 juin 2016 à 14:06
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 !
0
Whismeril Messages postés 17805 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 septembre 2022 859
18 juin 2016 à 20:13
Bonsoir, il faut initialiser ton random avec quelque chose qui change, en général, on utilise le Tick de DateTime.Now
-1
bountybob261 Messages postés 5 Date d'inscription samedi 18 juin 2016 Statut Membre Dernière intervention 22 août 2016
18 juin 2016 à 20:26
Merci beaucoup!
0
bountybob261 Messages postés 5 Date d'inscription samedi 18 juin 2016 Statut Membre Dernière intervention 22 août 2016
18 juin 2016 à 21:01
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.
0
Sugel Messages postés 4068 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017 721
19 juin 2016 à 14:38
please. Il faut juste générer une nouveau nombre, pas utiliser le temps comme graine !
0
Whismeril Messages postés 17805 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 27 septembre 2022 859
18 juin 2016 à 21:58
Un truc comme ça
Random rnd = new Random((int)DateTime.Now.Ticks);

-1