자바 2차원배열 중복되지않는 난수 생성
-
게시물 수정 , 삭제는 로그인 필요
import java.util.Random;
import java.util.Scanner;
public class Fortest2
{
public static void main(String args[])
{
Scanner scn = new Scanner(System.in);
System.out.println("N X N 2차원 배열 생성을 위한, N값을 입력하세요.");
int n = scn.nextInt();
int table[][] = new int [n][n];
for (int i = 0 ; i < table.length ; i++)
{
for (int j = 0 ; j < table[i].length ; j++)
{
table[i][j] = (int)(Math.random() * 41 - 20);
}
}
System.out.println("-20 ~ 20 사이 중복되지 않은 난수 발생 결과");
for (int g = 0 ; g < n ; g++)
{
for (int k = 0 ; k < n ; k++)
{
System.out.print(table[g][k] + "\t");
}
System.out.println();
}
}
}
입력 받은 값을 통해 2차원 배열을 생성시키고, Math.random()을 사용하여 -20부터 20까지 생성된 난수를 table[][] 배열에 집어넣는 코드까지는 쳤는데 배열을 출력하면 중복된 난수가 나옵니다.
이 난수가 중복되지 않도록 해야하는데, Hashmap이나 다른 메서드를 사용하지 않고
for (int i = 0; i < 10; i++) {
a[i] = r.nextInt(10) + 1;
for (int k = 0; k < i; k++) {
if (a[i] == a[k]) {
i--;
}
}
}
이 코드(1차원배열 난수 중복생성 방지) 처럼 for문을 이용하여 중복을 방지하도록 해야합니다.
그러면 어떤식으로 코드를 짜야하나요??
import java.util.Random;
import java.util.Scanner;
public class Fortest2
{
public static void main(String args[])
{
Scanner scn = new Scanner(System.in);
System.out.println("N X N 2차원 배열 생성을 위한, N값을 입력하세요.");
int n = scn.nextInt();
int table[][] = new int [n][n];
for (int i = 0 ; i < table.length ; i++)
{
for (int j = 0 ; j < table[i].length ; j++)
{
table[i][j] = (int)(Math.random() * 41 - 20);
}
}
System.out.println("-20 ~ 20 사이 중복되지 않은 난수 발생 결과");
for (int g = 0 ; g < n ; g++)
{
for (int k = 0 ; k < n ; k++)
{
System.out.print(table[g][k] + "\t");
}
System.out.println();
}
}
}
for (int i = 0; i < 10; i++) {
a[i] = r.nextInt(10) + 1;
for (int k = 0; k < i; k++) {
if (a[i] == a[k]) {
i--;
}
}
}
#자바 2차원배열 #자바 2차원배열 정렬 #자바 2차원배열 길이 #자바 2차원배열 출력 #자바 2차원배열 복사 #자바 2차원배열 입력 #자바 2차원배열 값 넣기 #자바 2차원배열 버블정렬 #자바 2차원배열 조합 #자바 2차원배열 정렬 람다