Génération de "map" en java

Résolu/Fermé
nockz84 - 12 mars 2012 à 21:57
 nockz84 - 12 mars 2012 à 22:29
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 !!



A voir également:

3 réponses

KX Messages postés 16640 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 3 décembre 2022 2 983
Modifié par KX le 12/03/2012 à 22:10
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
0
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 :)
0
KX Messages postés 16640 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 3 décembre 2022 2 983
12 mars 2012 à 22:13
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;
0
Merci beaucoup à toi !! Tous mes problèmes sont résolus :)
A +
0