Button btn1 = (Button)findViewById(R.id.btn1);
btn1.setText("Random=" +i);
제가 하고 싶은건
10개의 버튼이 있다고 하면 그 10개의버튼에 중복없이 0~9까지의 숫자를 뿌리고 싶습니다.
그래서 int i = (int)(Math.random() * 10); // 0~10 까지의 int 랜덤 생성
이걸 가지고는 중복이 생겨서 또한, 아직 10개의 버튼의 id값을 동시에 불러오는 법도 모릅니다.
중복없는 랜덤을 안다고 해도.. 버튼을 동시에 불러오지 못하면.. 중복없는것에 대한 의미가 없어져버리니까요..
좀 알려주세요~
음... 솔직히 Math.random() 의 range가 어떻게 되나요?
Ragne 몰라도.. 아래와 같은 방법으로 사용하시면.. 중복 없이 사용하실거예요.
int i = (int)(Math.random() * 10) ; // random()이 0~1사이 double값을 랜덤하게 해줄경우.
int i = (int)(Math.random() * 10)%10 ; // random()의 ragne가 1이상 클 경우.
Button btn1 = (Button)findViewById(R.id.btn1);
static int temparray[10]=0;
static int count=0; //만약 같은 class 가 여러번 호출될 경우..
while ( realloc_flag != TRUE)
{
for(int cnt=0; cnt<10; cnt++) {
temparray[count++] = i;
if(temparray[cnt] == i) {
realloc_flag=TRUE;
i = (int)(Math.random() * 10)%10 ;
cnt=0;
}
}
btn1.setText("Random=" +i);
아앙~모르겠당. 힌트만 얻어가슈~
ArrayList<String> list = new ArrayList<String>(10);
list.add("0");list.add("1");list.add("2");list.add("3");list.add("4");
list.add("5");list.add("6");list.add("7");list.add("8");list.add("9");
Collections.shuffle(list);
list 객체에는 숫자값이 섞여져 있을 겁니다.
이놈들을 하나씩 빼 쓰면 될 듯
숫자가 계속 변경되는 보안 키패드를 만드실려고 하시는거 같은데요. 0~9까지의 랜덤숫자를 얻어와서 10번 해서 똑같은 수가 안나올 확률은 미미합니다. 예전에 이런경우가 있엇는데요. 방법은 여러가지가 잇어서 난수 생성할때마다 배열저장했다가 난수생성돌때 저장된 변수 검사해서 똑같은 수면 다시 난수 생성하는 방법하고 이방법은 10개뽑아 내는데 정말 오래걸리수가 있조 아니면 2차원 배열을 만들어 여러경우의 0~9까지 숫자가 저장된 배열을 만든다음 난수생서을 한번만 해서 2차원 배열중 하나를 얻어올수 있조. 이방법도 메모리 공간 차지하는것때문에 안됨다면 꼭 0~9까지로 범위를 정하실 필요가 없습니다. 그냥 10000 ~ 100000까지 하시고 / 10000을 하셔서 0~9까지의 값을 구하신다면 중복되는값 나오기가 많이 힘들조. 근대 이것도 중복체크 해야되고 시간이 많이 걸리니 저는 2차원배열만들어서 하시는것을 추천합니다.
int aa[][] = new int[10][10] {
{0,4,5,2,3,6,7,8,9,}, {1,3,4,5,6,},{}
}
난수생성 값
aa[생성값][0];부터 ~ [9]까지 이용하는 것이 계산속도도 빠르고 괸찬을텐대요