Nombre aléatoire sans répétition

Fermé
Issouff Messages postés 7 Date d'inscription samedi 11 juin 2016 Statut Membre Dernière intervention 31 janvier 2017 - 31 janv. 2017 à 23:39
luckydu43 Messages postés 3484 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 30 juin 2022 - 31 janv. 2017 à 23:52
Salut j'ai réussi a générer des nombres aléatoires mais je voudrais qu'il n'y ai pas de répétition avec les nombres générés. J'ai besoin d'aide Voici mon code :



Random rnd = new Random();
for (int ctr = 1; ctr <= 7; ctr++)
{
Console.Write("{0,6}", rnd.Next(1, 50));
if (ctr % 7 == 0) Console.WriteLine();
}
A voir également:

1 réponse

luckydu43 Messages postés 3484 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 30 juin 2022 815
Modifié par luckydu43 le 31/01/2017 à 23:53
Bonsoir !

Déjà, vu que je code en Java, je ne parlerai pas de la syntaxe du code mais de l'analyse. Eh ouais --'

Bref ^_^
Je vois 2 manières pour ce faire :

Manière 1 : Stocker dans un conteneur quelconque (tableau, liste, enum, map, set...) une liste de nombres.
Utiliser la méthode random pour réarranger les termes de manière aléatoire. Le fait de replacer plusieurs fois le même terme ne pose alors pas de problème. Le tout sera de faire en sorte de le nombre de répétitions soit suffisamment grand pour être sûr à 95% que les termes ont tous changé de place. Ou non. Et ça donne une liste de nombres aléatoires différents mais l'ensemble des éléments générés sera forcément égal à l'ensemble de génération des nombres (tu veux des nombres de 3 à 42, tu auras TOUS les nombres de 3 à 42. Ni plus, ni moins).

Manière 2 : Stocker dans un conteneur quelconque chaque nombre généré, et si le nombre généré est déjà présent dans le conteneur... ne pas le rajouter. Cette méthode fonctionne bien pour le cas de la génération d'un nombre n de nombres situés dans un intervalle sans forcément demander à ce que n corresponde exactement au cardinal de i. Mais sans optimisation, cette manière est gourmande.

Si ça suffit, c'est top ;-)

Bon code

Luc
Les 3 plus grands mensonges du dev ? La doc sera faite plus tard... Le programme n'a aucun bug... Les spécifs sont finies...
Un peuple sacrifiant sa liberté pour plus de sécurité perd les deux.
-2