본문 바로가기
안드로이드 스튜디오 앱 개발/개념 안드로이드 스튜디오

안드로이드 스튜디오 랜덤함수 중복제거하는 방법 [Android Studio]

by 망댕이 2023. 6. 28.
반응형

랜덤으로 숫자가 출력되는 상황에서 내가 출력되지 않았으면 하는 어떠한 숫자와

랜덤으로 출력되는 숫자가 중복되는 경우에 그 숫자는 출력되지 않도록 하는 코드를 쉽게 알아보도록 하겠습니다.

    Button button;

    int count = 20;
    int a[] = new int[count];
    Random r = new Random();

간단하게 필요한 것들을 onCreate()하기전에 입력해줍니다.

count는 난수를 생성할 개수이고, a[]는 정수의 20개의 아이템을 가진 집합입니다.

랜덤함수를 중복제거하는 방법도 for문을 이용할 것인데

for(int i = 0; i < 2; i++){
    i = 1;
    a[i] = r.nextInt(최대값-최소값+1)+최소값;
    if(a[i] == 출력되지 않았으면 하는 숫자){
        i--;
        Log.d(TAG, "제외숫자와 같은 랜덤 숫자가 나왔었음");
    }else{
        Log.d(TAG, "랜덤숫자 뽑음 : " + a[i]);
        break;
    }
}

r.nextInt(최대값-최소값+1)+최소값으로 코드를 작성하게 되면

최소값~최대값 사이에 해당하는 랜덤한 값이 나오게 됩니다.

 

예를 들어 아래 처럼 코드를 입력했다고 가정해봅시다.

for(int i = 0; i < 2; i++){
    i = 1;
    a[i] = r.nextInt(10-0+1)+0;
    if(a[i] == 5){
        i--;
        Log.d(TAG, "제외숫자와 같은 랜덤 숫자가 나왔었음");
    }else{
        Log.d(TAG, "랜덤숫자 뽑음 : " + a[i]);
        break;
    }
}

최소값 0 ~ 최대값 10까지 임의로 나오는 a[1] 값이 내가 출력되지 않았으면 5 값과 일치했을 때 i -- 인하여 다시 i = 0으로 돌아갑니다.

또 최소값 0 ~ 최대값 10까지 임의로 나오는 a[1] 값이 내가 출력되지 않았으면 5 값과 일치했을 때 i -- 인하여 다시 i = 0으로 돌아가는 과정이 일치하지 않을 때까지 반복되다보니 정수 5 가 나올 수가 없습니다.

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "tag";
    Button button;

    int count = 20;
    int a[] = new int[count];
    Random r = new Random();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                for(int i = 0; i < 2; i++){
                    i = 1;
                    a[i] = r.nextInt(10-0+1)+0;
                    if(a[i] == 5){
                        i--;
                        Log.d(TAG, "제외숫자와 같은 랜덤 숫자가 나왔었음");
                    }else{
                        Log.d(TAG, "랜덤숫자 뽑음 : " + a[i]);
                        break;
                    }
                }
            }
        });
    }
}

반응형