마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이클립스 안드로이드 랜덤함수를 간단하게 만들고 싶어요

0 추천
이 소스를 간단하게 할수 없을까요?

1~45까지 랜덤한 수를 뽑아내는 소스인데, 중복, 정렬소스를 간단화시키고 싶어요.

@Override
            public void onClick(View v) {
                int temp;
                int no[]={0,0,0,0,0,0};
                int bonus=0;
                for(int i=0;i<6;i++){//랜덤생성
                    temp=(int)((Math.random()*45)+1);//1~45까지 값을 랜덤생성
                    boolean flag=true;
                    //중복확인
                    for(int j=0;j<i;j++){
                        if(no[j]==temp){
                            flag=false;
                        }
                    }
                    if(flag){
                        no[i]=temp;
                    }else{
                        i--;
                    }
                }
                
                //정렬
                for(int i=0;i<no.length;i++){
                    for(int j=0;j<no.length;j++){
                        if(no[i]<no[j]){
                            temp=no[i];
                            no[i]=no[j];
                            no[j]=temp;
                        }
                    }
                }
            //보너스번호
                boolean flag_bonus=true;
                for(int i=0;i<1;i++){
                    flag_bonus=true;
                    temp=(int)((Math.random()*45)+1);
                    for(int j=0;j<no.length;j++){
                        if(no[j]==temp){
                            flag_bonus=false;
                        }
                    }
                    if(flag_bonus){
                        bonus=temp;
                    }else{
                        i--;
                    }
                }
익명사용자 님이 2015년 10월 27일 질문

1개의 답변

0 추천
랜덤의 값을 추출 할때는 일반적인 생각으로 해당 로직을 이용하기는 합니다~~!

말도 안되는 소리지만 계속해서 중복된 숫자가 나온다면 해당 로직은 무한 루프에 빠지게 되니 좋은 로직이라 볼수 없죠~!

물론 보시는 바와 같이 소스의 길이도 길어지구요~!

질문하신 1~45까지의 배열을 생성 후 배열을 셔플하여 하나씩 뽑아 쓰는 방법이 간단하고 좀더 확실한 로직이 아닐까 생각해 봅니다~!
ThisPlus (46,920 포인트) 님이 2015년 10월 27일 답변
...