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

로또 만드는중 랜덤값 질문

+1 추천
지금 로또게임을 그냥 공부할겸해서 만들고있는데

임의의 수를 가져오는게아니고, 이미지 낱장으로 1~45번 까지 있습니다.

이미지를 랜덤으로 출력하게되는데요. 검색을 해봐도 숫자랜덤중복값 없애는것만 나와있어서ㅠㅠ

이미지 중복값 안나오게 하는건 어떻게 해야할까요?ㅠㅠ...
쮸뿌쮸뿌 (2,470 포인트) 님이 2014년 3월 4일 질문

1개의 답변

0 추천
어떤 식으로 출력하시는 지 모르겠는데..

/숫자랜덤중복없이/ 를 써서 케이스별로 이미지를 뿌리면 되는거 아니에요?

각 케이스라고 해서 꼭 45가지 경우에 대해서 case :0 ~ case : 45 를 할 필요는 없고

이미지를 가져오는 방법에 따라 쉽게 풀어갈 수도 있으니까요

예를 들어 파일명을 lotto00~ lotto45 로 만든후 파일명으로 이미지를 가져와서 뿌린다던가 ㅎㅎ

다른 방법이 필요하신건가요?

지금 이미지를 어떤 식으로 뿌리시는지?
초보개발자ㅠ (33,870 포인트) 님이 2014년 3월 4일 답변
int index = (int)(Math.random() * 45);
int res = balls[index];
ImageView ballsimg1 = (ImageView) findViewById(R.id.BallView1);
ballsimg1.setImageResource(res);

이렇게 7개를 돌렸어요..
음.. balls[45] 크기의 배열을 만들어서 미리 각각의 이미지 리소스 아이디를 대입해주고 인덱스 값은 랜덤으로 받은 후에 이미지뷰에 셋 해주시는 거에요? 위와 같이 7개를 돌렸다고 하셨는데 이미지뷰도 7개 있는 거에요? 클릭할때마다 하나씩 뿌려주는건가.. ㅎㅎㅎ 뭐 쨋든
쉽게 생각하면 인덱스를 랜덤으로 뽑을때, 한번에 7개를 뽑으시면 되겠네요.

추가로 방법론 끄적.. 끄적..
만약 버튼 클릭했을 때 뿌려주는 방식이면 클릭 시점에서 랜덤으로 인트배열[7] 에다가 7개의 값을 받아두세요. 그리고 필요하다면 낮은 값 순서대로 정렬하시고 차례대로 ++  해가면서 출력하시면 좋을 듯
이미지뷰도 7개예요..버튼클릭 메소드에서 클릭시 이미지뷰7개가 랜덤으로 돌아가는거구요...이게 젤 기초라는데....큰일..ㅠㅠ
이미지뷰 7개가 랜덤으로 돌아간다는 건 무슨말씀이신지.. 잘 모르겠네요 ;ㅅ; 위에서 말씀하신 7개 돌리는 부분 코드를 좀 볼 수 있을까요?
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub

int index = (int)(Math.random() * 45);
int res = balls[index];
ImageView ballsimg1 = (ImageView) findViewById(R.id.BallView1);
ballsimg1.setImageResource(res);
               
int index2 = (int)(Math.random() * 45);
int res2 = balls[index2];
ImageView ballsimg2 = (ImageView) findViewById(R.id.BallView2);
ballsimg2.setImageResource(res2);           

int index3 = (int)(Math.random() * 45);
int res3 = balls[index3];
ImageView ballsimg3 = (ImageView) findViewById(R.id.BallView3);
ballsimg3.setImageResource(res3);

int index4 = (int)(Math.random() * 45);
int res4 = balls[index4];
ImageView ballsimg4 = (ImageView) findViewById(R.id.BallView4);
ballsimg4.setImageResource(res4);
               
이렇게 7까지 돌렸다는 얘기예요..xml에 레이아웃 설정할때 이미지뷰 7개를 만들었거든요..ㅠㅠ
오잉..중복없이 랜덤함수 뽑는 것도 찾아보셨으면
지금 구현하신 소스에서는 그냥 요렇게만 해주면 되잖아용?

btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
  int[] result = new int[7];
  int[] temp = new int[7];
  int count =0;
  while(count != 7)
  {
      boolean test = true;
      int r = (int)(Math.random()*45 + 1);
      for(int i=0; i<result.length; i++)
      {
            if(result[i] ==r)
            {
                  test=false;
      break;
             }
        }
        if(test)
        {
              result[count++]=r;
         }
  }

  for(int k=0; k<7; k++)
  {
     temp[k] = balls[result[k]];
  }

ImageView ballsimg1 = (ImageView) findViewById(R.id.BallView1);
  ImageView ballsimg2 = (ImageView) findViewById(R.id.BallView2);
  ImageView ballsimg3 = (ImageView) findViewById(R.id.BallView3);
  ImageView ballsimg4 = (ImageView) findViewById(R.id.BallView4);
  ImageView ballsimg5 = (ImageView) findViewById(R.id.BallView5);
  ImageView ballsimg6 = (ImageView) findViewById(R.id.BallView6);
  ImageView ballsimg7 = (ImageView) findViewById(R.id.BallView7);
  
  ballsimg1.setImageResource(temp[0]);
  ballsimg2.setImageResource(temp[1]);
  ballsimg3.setImageResource(temp[2]);
  ballsimg4.setImageResource(temp[3]);
  ballsimg5.setImageResource(temp[4]);
  ballsimg6.setImageResource(temp[5]);
  ballsimg7.setImageResource(temp[6]);

p,s 리소스 아이디가 어떻게 되있는지 몰라서 0번은 안나오게 했어요
필요하시면 랜덤함수 45 뒤에 +1 빼세요

참고하세요
http://cafe.naver.com/studyalgorithm/2053
헐.....정말 감사드려요ㅠㅠ공부하는데 진짜 큰 도움이 됫네요..이제 제가 이해하는일만 남았네요. 정말 감사합니당!
...