Une reponse au hasard...

Résolu
Wardog56 Messages postés 15 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 19 juin 2006 - 4 juin 2006 à 21:28
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 5 juin 2006 à 15:30
Bonjour à tous !!!
Voila mon probleme, je veux que mon programme génére une reponse au hasard parmi celle citée
Lorsque l'utilisateur dit "aurevoir" je veux que le programme reponde SOIT "Tchao" OU "A+" et non les deux. Comment faire???

Voici le code:
if

(msg
.CompareTo("aurevoir") == 0 )
{

session.send("Tchao");

session.send("A+");
}

Merci d'avance pour vos reponses

16 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
4 juin 2006 à 21:56
Salut,
Pour générer un nombre aléatoire, tu peux utiliser la class Random.

<hr size= "2" /> VC# forever
=13319
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
4 juin 2006 à 22:00
Salut
Essaie ca :

<hr />if (
new
Random(
DateTime.Now.Millisecond).Next(2) == 0)

   session.Send(
"tchao");

else
   session.Send(
"a+");

<hr />
Mx
MVP C# 
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 juin 2006 à 13:28
Ca marche peut etre, mais ce n'est pas bon.
En fait il faut prendre moins de raccourcis que j'en ai pris dans le premier exemple, a savoir, generer l'instance de Random dans le if.
La, il faut que tu generes ton instance en dehors du if, que tu recuperes l'entier que te renvoie la méthode Next, et que tu bases tes if dessus (et non pas reinstancier un Random dans chaque if, ca n'a plus de sens)

<hr />

Random rand =
new
Random(
DateTime.Now.Millisecond);

int value = rand.Next(3);
// Valeur maximale retournée par le Next : 3
if (value == 0) session.Send(
"Tchao");

else
if (value == 1) session.Send(
"a+");

else session.Send(
"Salut");
<hr />

Mx
MVP C# 
3
Coolpix08 Messages postés 150 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 21 décembre 2007 2
5 juin 2006 à 14:00
heu jpige pas mais pourquoi tu utilise pas directe un case
ca ira deja plus vite
et tu ne serait pas limiter en nombre de reponse.
pour une valeur de 0->3 ben Next(3)

Dans lexemple de MorpionMx apres le int value=rand.Next(3)

switch (value)
{
  case 0:
    //code
  break;
  case 1:

    //code

  break;
  case 2:

    //code

  break;
....

  defautl:

    //code

  break;

}

et voila, pour le reste ta plus qu'à étendre le code
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Wardog56 Messages postés 15 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 19 juin 2006
5 juin 2006 à 12:51
Ok merci sa marche sans probleme. Mais pour 3 reponses cela ne marche pas :

if

(new Random(DateTime
.Now
.Millisecond
).Next(3) == 0)

session
.send("Salut ");

else if

session
.send("Hello");

else

session
.send("Slt !!! :)");
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 juin 2006 à 12:54
Oui c'est normal.
Essaies de comprendre ce que tu as fait la, tu verras que c'est logique.

Mx
MVP C# 
0
Wardog56 Messages postés 15 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 19 juin 2006
5 juin 2006 à 13:16
J'ai retouché le code et il n'y a pas d'erreur.
Cela a l'air de produire ce que je veux...
Je me demande si c'est bon quand même...
Au fait le .Next il sert à quoi exactement ??

if

(new Random(DateTime
.Now
.Millisecond
).Next(3) = = 0)

session
. send ("Salut ");

else if (new Random(DateTime
.Now
.Millisecond
).Next(3) == 0)

session
.send("Hello");

else

session
.send("Slt !!! :)");
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 juin 2006 à 13:29
J'oubliais : Doc de la classe Random

Mx
MVP C# 
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
5 juin 2006 à 13:43
Pour le link sur la documentation, je l'avais mis dans le premier poste.... héhé.

<hr size= "2" /> VC# forever
=13319
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 juin 2006 à 13:46
Oups, mince, en effet :p
Du coup, plus d'excuse pour la question concernant l'utilité de la méthode Next()

Mx
MVP C# 
0
Wardog56 Messages postés 15 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 19 juin 2006
5 juin 2006 à 14:29
Ok Merci pour toutes vos reponses !!!

J'ai utilisé le case comme recommander par 245485 Coolpix08

Sa marche hyper bien ;)

Ca me donne :

Random rand
= new Random(DateTime
.Now
.Millisecond
);

int value
= rand
.Next(2);

switch (value
)

{

case 0:

session.send("Tchao");

break;

case 1:

session.send("a+");

break;

case 2:

session.send("Salut");

break;

}
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
5 juin 2006 à 15:05
Sauf que là ça ne donnera jamais "Salut"..
0
Wardog56 Messages postés 15 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 19 juin 2006
5 juin 2006 à 15:15
Ba pourquoi???

Regarde j'ai la variable int value rand.Next
(2); Donc elle est comprise entre 0 et 2

Donc lorsque int value = 2 cela envoie "Salut"

Je dois surement me tromper mais c'est comme sa que j'apprends. Si tu pouvais m'éclairer.

Ou peut-être que je remplace case 2:
par
default

?????
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 juin 2006 à 15:20
Disons que si tu regardais la Doc (t'as quand meme 2 fois le lien), tu verrais que la méthode Next(maxValue) renvoit une valeur comprise entre 0 et maxValue (non incluse).
Il n'y aura jamais de 2, juste 0 et 1.
Donc dans ton cas, tu dois specifier 3 en maxValue.

Quant a default:, il s'effectue quand tu ne "gere" pas la condition, donc la ca ne serait pas le cas (les valeurs possibles renvoyées par Next sont 0 et 1, et tu as des case pour 0 et  1)

Mx
MVP C# 
0
Wardog56 Messages postés 15 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 19 juin 2006
5 juin 2006 à 15:28
OK merci beaucoup

Je crois que je vais lire la doc attentivement au lieu de poser des questions idiotes....
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 juin 2006 à 15:30
C'est pas idiot, mais c'est juste un reflexe a prendre ;)

Mx
MVP C# 
0
Rejoignez-nous