Générer une série de nombre aléatoire tous différents
Résolu/Fermé
kevdaig
Messages postés
16
Date d'inscription
dimanche 31 août 2014
Statut
Membre
Dernière intervention
22 février 2016
-
Modifié par Whismeril le 30/01/2015 à 18:52
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 - 3 févr. 2015 à 12:54
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 - 3 févr. 2015 à 12:54
A voir également:
- Générer une série de nombre aléatoire tous différents
- Numéro de série idm - Forum Téléchargement
- Nombre aléatoire excel sans doublon ✓ - Forum Excel
- Télécharger idm gratuitement sans numéro de série ✓ - Forum Logiciels
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Excel
- Canal + serie free - Guide
2 réponses
[Dal]
Messages postés
6057
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
17 mars 2023
1 043
Modifié par [Dal] le 3/02/2015 à 12:55
Modifié par [Dal] le 3/02/2015 à 12:55
Salut kevdaig,
gravgun a très bien expliqué la cause de ton problème : il faut sortir
Je voulais juste attirer ton attention sur le fait que je ne crois pas que ton programme fasse en sorte qu'il "génère des nombres uniques", ou "tous différents les un des autres" dans le contexte d'un tirage de coordonnées.
Si le but est de vérifier que le programme ne génère pas deux fois les mêmes coordonnées x et y localisant l'emplacement d'un certain nombre de "mines" dans un espace à deux dimensions, il faudrait à chaque tentative de tirage, vérifier qu'aucun de tous les tirages précédents ne correspond au nouveau tirage (pas seulement celui qui précède).
Comme c'est assez lourd, et que tu peux avoir à faire ce type de vérifications souvent dans ton code, tu peux ruser en organisant tes données différemment.
Un moyen simple, mais plus consommateur de mémoire, consiste à
- créer un tableau à deux dimensions, dont les dimensions correspondent au terrain à miner,
- à l'initialiser (à zéro par exemple),
- à mettre une valeur aux coordonnées correspondant au tirage représentant une mine, à moins que cet emplacement ne soit pas libre, et à répéter le tirage tant que l'emplacement désigné n'est pas libre
La vérification de ce qu'il existe ou non une mine à des coordonnées données devient triviale, il suffit d'accéder au contenu du tableau.
Il se peut aussi que je n'aie rien compris à ce que tu veux faire car tes explications étaient assez elliptiques, dans ce cas ignore mon message :-D
Dal
gravgun a très bien expliqué la cause de ton problème : il faut sortir
srandde tes boucles et ne l'appeler qu'une fois avant tout appel à
rand.
Je voulais juste attirer ton attention sur le fait que je ne crois pas que ton programme fasse en sorte qu'il "génère des nombres uniques", ou "tous différents les un des autres" dans le contexte d'un tirage de coordonnées.
Si le but est de vérifier que le programme ne génère pas deux fois les mêmes coordonnées x et y localisant l'emplacement d'un certain nombre de "mines" dans un espace à deux dimensions, il faudrait à chaque tentative de tirage, vérifier qu'aucun de tous les tirages précédents ne correspond au nouveau tirage (pas seulement celui qui précède).
Comme c'est assez lourd, et que tu peux avoir à faire ce type de vérifications souvent dans ton code, tu peux ruser en organisant tes données différemment.
Un moyen simple, mais plus consommateur de mémoire, consiste à
- créer un tableau à deux dimensions, dont les dimensions correspondent au terrain à miner,
- à l'initialiser (à zéro par exemple),
- à mettre une valeur aux coordonnées correspondant au tirage représentant une mine, à moins que cet emplacement ne soit pas libre, et à répéter le tirage tant que l'emplacement désigné n'est pas libre
La vérification de ce qu'il existe ou non une mine à des coordonnées données devient triviale, il suffit d'accéder au contenu du tableau.
Il se peut aussi que je n'aie rien compris à ce que tu veux faire car tes explications étaient assez elliptiques, dans ce cas ignore mon message :-D
Dal
ElementW
Messages postés
4764
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 295
31 janv. 2015 à 20:32
31 janv. 2015 à 20:32
'lut, ils sont tous identiques car tu rappelles
De manière générale, avec un générateur de nombre pseudo-aléatoire, on ne donne de seed qu'une seule fois, au début du programme, jamais après.
srandà chaque itération, et comme générer un nombre aléatoire prend très peu de temps (moins d'1 seconde), la valeur fournie a
srandest toujours la même. Donc vire moi ça, et mets en un seul au début.
De manière générale, avec un générateur de nombre pseudo-aléatoire, on ne donne de seed qu'une seule fois, au début du programme, jamais après.
kevdaig
Messages postés
16
Date d'inscription
dimanche 31 août 2014
Statut
Membre
Dernière intervention
22 février 2016
3 févr. 2015 à 00:43
3 févr. 2015 à 00:43
Tu as tout à fait raison! Merci