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 | 1455 (984) | nyler |
» | Naloga iz Putka - UPMOddelek: Programiranje | 2359 (1695) | NejcSSD |
» | Java skeniranje map in podmapOddelek: Programiranje | 1247 (1136) | nightrage |
» | Rekurzija v javi z ArrayListOddelek: Programiranje | 1676 (1519) | marjan_h |
» | Naloga v C#Oddelek: Programiranje | 2684 (2184) | Hardstyle |