Génération de "map" en java

[Résolu/Fermé]
Signaler
-
 nockz84 -
Bonjour,
je suis sur un petit programme en java et une partie consiste à générer une "map" aléatoirement par le biais de la commande :
exemple:
genmap 5, 7
..|.|
.|...
|....
..|.|
|||..
..|.|
.....

Cependant, pour l'instant, ça n'affiche que:
.....
.....
.....
.....
.....
.....
.....

voici le code de génération:


for (int i = 0; i < height; i++)
			{
				for (int e = 0; e < width; e++)
				{
					 
					 Random rand = new Random();
					 intbool = rand.nextInt(1);
					 if (intbool == 1){Char = '0';}
					 else if (intbool == 0){Char = '.';}
					 System.out.print(Char);
					 
					 
				}
				System.out.println("");
			}


J'ai l'impression que Random rand = new Random(); ne regénère pas un nombre à chaque passage dans la boucle. Comment puis-je y remédier ?
Ps: c'est peut être important mais le random génère toujours le même nombre, ici 0...

Merci beaucoup d'avance !!



3 réponses

Messages postés
16410
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 octobre 2021
2 903
Random.nextInt(n) renvoie un nombre entre 0 et n-1, en conséquence si tu veux un nombre aléatoire entre 0 et 1, tu dois utiliser Random.nextInt(2)
Cependant si c'est pour avoir un booléen tu peux utiliser Random.nextBoolean()

Au passage, il n'est pas utile de créer un nouvel objet Random à chaque fois, tu devrais plutôt créer rand une fois, et le réutiliser autant que nécessaire...

Par contre je n'ai pas compris ce que tu voulais faire avec ta "map", mais peut-être que le problème du Random t'aidera à faire ce que tu veux...La confiance n'exclut pas le contrôle
Génial, merci mais j'ai un autre problème, désolé :s
pour la génération d'un nombre aléatoire:

			int coma;
			coma = cmd.indexOf(',');
			String space = " ";
			String strmin = cmd.substring(7, coma);
			String strmax = cmd.substring(coma+2, cmd.length());
			int min = Integer.parseInt(strmin);
			int max = Integer.parseInt(strmax);
			Random rand = new Random();
			int nb = rand.nextInt(max)+min;
			print(nb);


La génération marche bien pour tous les nombres, mais si je fais :
random 5, 10
il me génère par exemple 12...
Merci encore pour ta réponse, KX :)
Messages postés
16410
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 octobre 2021
2 903
En fait ici (avec 5 et 10), tu lui demandes de choisir un nombre aléatoire entre 0 et 9, et de lui rajouter 5, en gros c'est comme si tu tirais aléatoirement un nombre entre 5 et 14 (par exemple : 12)
Si tu veux un nombre entre min et max, tu dois faire rand.nextInt(max-min)+min;
Merci beaucoup à toi !! Tous mes problèmes sont résolus :)
A +