Bug dans mon système aléatoire (random)
Résolu/Fermé
cindylechat
Messages postés
24
Date d'inscription
mercredi 14 décembre 2016
Statut
Membre
Dernière intervention
21 décembre 2016
-
Modifié par jordane45 le 16/12/2016 à 18:35
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 - 16 déc. 2016 à 21:37
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 - 16 déc. 2016 à 21:37
A voir également:
- Bug dans mon système aléatoire (random)
- Bug yahoo mail - Guide
- Restauration systeme windows 10 - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Tirage au sort excel aléatoire sans doublon ✓ - Forum Excel
- Iptv bug forum 2023 ✓ - Forum Box et Streaming vidéo
2 réponses
Whismeril
Messages postés
19024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 avril 2024
928
16 déc. 2016 à 21:00
16 déc. 2016 à 21:00
Je viens d'essayer ça
J'ai enlevé les contrôles, que je n'ai pas et j'ai fait une boucle pour avoir 20 combinaisons.
Le random est bien déclaré pour une portée supérieure et il n'y en un bien un seul d'utiliser pour mes 20 combinaisons, soit 40 tirages.
1ere exécution
2eme exécution
Donc à priori, j'ai un peu tout et pas dans le même ordre.
List<string> combinaisons = new List<string>(); Random rnd1 = new Random(); for (int i = 0; i < 20; i++) { string[] tableauCorde = { "A", "B", "D", "E", "G" }; int iCorde = rnd1.Next(5); string corde = tableauCorde[iCorde]; if (true) { //Prend une note au hasard string[] tableauNote = { "A", "B", "C", "D", "E", "F", "G" }; int iNote = rnd1.Next(7); string note = tableauNote[iNote]; combinaisons.Add(string.Format("Code : {0}, Note {1}", corde, note)); } } string resultatForum = string.Join("\r\n", combinaisons);
J'ai enlevé les contrôles, que je n'ai pas et j'ai fait une boucle pour avoir 20 combinaisons.
Le random est bien déclaré pour une portée supérieure et il n'y en un bien un seul d'utiliser pour mes 20 combinaisons, soit 40 tirages.
1ere exécution
Code : B, Note G
Code : B, Note B
Code : E, Note E
Code : A, Note C
Code : A, Note G
Code : D, Note E
Code : B, Note G
Code : A, Note G
Code : D, Note F
Code : G, Note A
Code : B, Note A
Code : A, Note C
Code : G, Note B
Code : E, Note D
Code : A, Note B
Code : G, Note B
Code : E, Note G
Code : A, Note C
Code : A, Note F
Code : A, Note A
2eme exécution
Code : B, Note E
Code : G, Note C
Code : A, Note A
Code : D, Note F
Code : D, Note F
Code : G, Note C
Code : G, Note D
Code : D, Note A
Code : D, Note F
Code : A, Note A
Code : E, Note C
Code : D, Note D
Code : D, Note F
Code : D, Note D
Code : D, Note B
Code : A, Note C
Code : D, Note D
Code : E, Note B
Code : E, Note E
Code : A, Note C
Donc à priori, j'ai un peu tout et pas dans le même ordre.
Whismeril
Messages postés
19024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 avril 2024
928
16 déc. 2016 à 19:19
16 déc. 2016 à 19:19
Bonsoir
pour que ton code soit lisible sur le forum, merci d'utiliser la coloration syntaxique, voir la procédure ici. Pour cette fois, j'ai demandé à la modération d'éditer ton message. Merci Jordane.
Concernant ton soucis
Essaye de mettre ton random global sur la classe.
Tu fais un Next pour la corde et un Next pour la note
pour que ton code soit lisible sur le forum, merci d'utiliser la coloration syntaxique, voir la procédure ici. Pour cette fois, j'ai demandé à la modération d'éditer ton message. Merci Jordane.
Concernant ton soucis
Essaye de mettre ton random global sur la classe.
Tu fais un Next pour la corde et un Next pour la note
cindylechat
Messages postés
24
Date d'inscription
mercredi 14 décembre 2016
Statut
Membre
Dernière intervention
21 décembre 2016
6
16 déc. 2016 à 19:31
16 déc. 2016 à 19:31
Qu'est-ce que tu veux dire ? J'ai déjà mis un Next pour la corde et un autre pour la note ?!
Whismeril
Messages postés
19024
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 avril 2024
928
16 déc. 2016 à 19:35
16 déc. 2016 à 19:35
Non, tu as créé deux randoms, je te propose (ça n'est peut être pas la solution) de n'en utiliser qu'un seul pour les deux.
Il faut juste veiller à ce que sa portée le permette.
Il faut juste veiller à ce que sa portée le permette.
cindylechat
Messages postés
24
Date d'inscription
mercredi 14 décembre 2016
Statut
Membre
Dernière intervention
21 décembre 2016
6
Modifié par cindylechat le 16/12/2016 à 19:42
Modifié par cindylechat le 16/12/2016 à 19:42
J'ai testé avec cela:
J'ai toujours le même problème..
J'ai toujours le même problème..
//Prend une corde au hasard string[] tableauCorde = { "A", "B", "D", "E", "G" }; Random rnd1 = new Random(); int iCorde = rnd1.Next(5); string corde = tableauCorde[iCorde]; etq_quelle_corde.Text = corde; if (bFret) { //Prend une note au hasard string[] tableauNote = { "A", "B", "C", "D", "E", "F", "G" }; int iNote = rnd1.Next(7); string note = tableauNote[iNote]; etq_quelle_note.Visible = true; etq_quelle_note.Text = note; }
yg_be
Messages postés
22698
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 avril 2024
1 471
16 déc. 2016 à 21:03
16 déc. 2016 à 21:03
Tu dois faire
Random rnd1 = new Random();une seule fois, pas chaque fois que tu recherches une nouvelle combinaison.
16 déc. 2016 à 21:05
Merci d'avoir pris le temps de m'aider !
Bonne fin de soirée :)
Modifié par Whismeril le 16/12/2016 à 21:38
Il possède d'ailleurs 2 constructeurs, le deuxième prend un int en paramètre et il est conseillé d'utiliser quelque chose qui change, l'heure par exemple.
Et donc, en utilisant autant de random que de tirage, tu as de grandes chances d'avoir des début de séquences identiques.
Si ça te convient, merci de marquer le sujet résolu avec le lien dédié, juste en dessous du titre de la discussion. Idem pour la précédente.