Forum » Programiranje » Java-random-polje
Java-random-polje
Karton44444 ::
Živijo,
rabil bi pomoč pri nalogi.
Naloga pravi, da moram naredit polje 7x5, ki bo vsebovala random števila.
Ponavljat pa se ne smejo tudi v isti vrstici in stoplcu, tole pa ne znam narediti...
Prišel sem do tukaj, naprej pa ne bi znal.
Random ran =new Random();
int [][] raa = new int [7][5];
for(int x = 0; x < 7; x++){
for(int y = 0; y < 5; y++){
raa[x][y] = ((ran.nextInt(9))+1);
}
}
Hvala za pomoč.
Primer kako bi moralo zgledati:
2 7 4 8 6
1 9 6 5 4
5 3 9 4 7
3 5 2 6 8
8 4 1 9 2
7 6 8 2 9
9 2 7 1 5
LP
rabil bi pomoč pri nalogi.
Naloga pravi, da moram naredit polje 7x5, ki bo vsebovala random števila.
Ponavljat pa se ne smejo tudi v isti vrstici in stoplcu, tole pa ne znam narediti...
Prišel sem do tukaj, naprej pa ne bi znal.
Random ran =new Random();
int [][] raa = new int [7][5];
for(int x = 0; x < 7; x++){
for(int y = 0; y < 5; y++){
raa[x][y] = ((ran.nextInt(9))+1);
}
}
Hvala za pomoč.
Primer kako bi moralo zgledati:
2 7 4 8 6
1 9 6 5 4
5 3 9 4 7
3 5 2 6 8
8 4 1 9 2
7 6 8 2 9
9 2 7 1 5
LP
bleem ::
probaj premislit v tej smeri .. preden številko shraniš v array si jo posreduj novi metodi, ki potrebuje podatke v kateri vrstici in stolpcu se nahajas in preveris če se ta številka že kje pojavlja, če se ne jo shraniš v array, če pa se pa jo vzames drugo nakljucno stevilo.
_Dormage_ ::
Še dve for zanki, ki preverita, če je izbrano random število že uporabljeno bodisi v vrstici ali stolpcu.
Če je še enkrat vržeš kokcko :)
Če je še enkrat vržeš kokcko :)
Rokm ::
Problem je kadar prideš do kakšne take situacije:
Tako da nekakšen backtrack bo potrebno implementirat če hočeš da so rešitve naključne in pravilne.
5 6 7 8 9 4 5 6 7 8 3 4 5 6 7 2 3 4 5 6 6 7 8 9 5 9 1 2 3 4 1 2 3 4 _
Tako da nekakšen backtrack bo potrebno implementirat če hočeš da so rešitve naključne in pravilne.
LeQuack ::
Jaz sem rešil na stari dobri iterativni način, in sicer z uporabo poolov možnih številk.
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; /** * Program generira matriko dimenzij VRSTICE_ST x STOLPCI_ST z nakljucnimi stevili od * 1-9, ki se ne ponavljajo horizontalno ali vertikalno. */ public class RandomNumbers { public static void main(String[] args) { // Stevilo vrstic ter stolpcev matrike final int VRSTICE_ST = 7; final int STOLPCI_ST = 5; // Seznam poolov, iz katerih jemljes stevila, STOLPCI_ST horinzontalno ter VRSTICE_ST vertikalno List<List<Integer>> vrsticePools = new ArrayList<List<Integer>>(VRSTICE_ST); List<List<Integer>> stolpciPools = new ArrayList<List<Integer>>(STOLPCI_ST); // Vsak pool napolnimo s stevili od 1-9 for (int i = 0; i < VRSTICE_ST; i++) vrsticePools.add(new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8,9))); for (int i = 0; i < STOLPCI_ST; i++) stolpciPools.add(new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8,9))); // Definiramo matriko pravih dimenzij int[][] matrika = new int[VRSTICE_ST][STOLPCI_ST]; // Generator nakljucnih stvari Random ran = new Random(); // Gremo skozi vse vrstice for (int i = 0; i < VRSTICE_ST; i++) { // Gremo skozi vse stolpce for (int j = 0; j < STOLPCI_ST; j++) { // Za strenutno vrstico in stolpec vzamemo pool moznih stevilk List<Integer> stolpecPool = stolpciPools.get(j); List<Integer> vrsticaPool = vrsticePools.get(i); // Ponavljamo zanko (izbira nakljucne stevilke) dokler ne najdemo stevilko, // ki obstaja v obeh poolih while (true) { // Pridobi nakljucni index iz moznih indeksov za pool int index = ran.nextInt(stolpecPool.size()); // Za ta index pridobi stevilko iz poola za stolpec int izbranaStevilka = stolpecPool.get(index); // Preverimo, ce to stevilo obstaja tudi v poolu za vrstico int vrIndex = vrsticaPool.indexOf(izbranaStevilka); // Stevilka obstaja v obeh poolih, imamo zadetek if (vrIndex > -1) { // Pobrisemo stevilko iz obeh poolov stolpecPool.remove(index); vrsticaPool.remove(vrIndex); // Matriki dodamo to stevilko matrika[i][j] = izbranaStevilka; // Izhod iz zanke break; } } } } // Izpisi matriko na standard output for (int i = 0; i < VRSTICE_ST; i++) { for (int j = 0; j < STOLPCI_ST; j++) { System.out.print(matrika[i][j] + " "); } System.out.println(); } } }
Quack !
Zgodovina sprememb…
- spremenil: LeQuack ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java - DN] Naključna številaOddelek: Šola | 1364 (893) | nyler |
» | Naloga iz Putka - UPMOddelek: Programiranje | 2223 (1559) | NejcSSD |
» | Java skeniranje map in podmapOddelek: Programiranje | 1159 (1048) | nightrage |
» | Rekurzija v javi z ArrayListOddelek: Programiranje | 1589 (1432) | marjan_h |
» | Naloga v C#Oddelek: Programiranje | 2620 (2120) | Hardstyle |