2014-09-13 5 views
0

0-9 범위의 임의의 정수를 생성하고 크기 100의 배열에 넣으 려합니다. 그것은 쉽지만 배열에서 0-9 범위의 모든 정수가 적어도 하나 이상 있는지 확인하는 방법을 알지 못합니다.모든 숫자가 지정된 범위에서 임의의 숫자 생성

이것은 모두 Java를 사용하고 있습니다.

public static int[] extendTo1024(int[] key) { 
    int[] extendedKey = new int[1024]; 
    Random random = new Random(); 
    for(int i = 0; i < 1024; i++) { 
     int rand = random.nextInt(64) + 1; 
     extendedKey[i] = bitKey[rand]; 
    } 
    return extendedKey; 
} 

어떤 도움을 :

이것은 내가 (나는 간단한 질문을하고 싶었 기 때문에 숫자가 내 코딩이 다르다) 지금까지있어 무엇인가? 미리 감사드립니다.

+1

먼저 당신이 이것을 달성하기 위해 무엇을했는지 보여주세요! –

+3

0에서 9까지 10 개의 항목을 추가하고 나머지 90 개를 생성 한 다음 배열을 임의로 섞습니다. – Jack

+1

배열의 정수가 무작위로 생성 된 경우 해당 범위의 정수 중 하나 이상이 배열에없는 경우 항상 작지만 0이 아닌 확률이 있습니다. 따라서 실제로 무작위가 아닌 정수를 생성하는 방법을 찾고 있다는 것을 정확히 이해합니까? 그렇다면 0에서 9까지의 범위에있는이 정수가 아닌 순서의 필수 특성을 설명 할 수 있다면 도움이 될 것입니다. – Simon

답변

3
  1. 임의의 숫자와 숫자 0-9
  2. 나머지를 채우기 처음 10 개 요소를 채우
  3. 배열
셔플
+0

+1 그건 내가 대답했을 것이다 :-) –

+0

@ErwinBolwidt 사실 잭이 나를 3 분 동안 때렸다. 그러나 어떤 이유에서 그는 대답 대신 OP에 대해 논평했다. – SnakE

+0

고마워요,하지만 다른 포스트에서 말했듯이, 배열의 첫 번째 10 개의 셀을 무작위로 만들려고합니다. 즉, 이와 같은 것이 처음 10 개의 셀 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}로 표현된다. – Tony

1
ArrayList<Integer> al = new ArrayList<Integer>(); 

//make sure the array contains all occurences of 0-9 
for (int i = 0; i < 10; i++) { 
    al.add(i, i); 
} 

//generate random number for the remaining 90 
for (int i = 10; i < 100; i++) { 
    int random = (int) (Math.random() * 10);    
    al.add(i, random); 
} 

//shuffle the random numbers to make sure that the first 10 are randomly placed 
Collections.shuffle(al); 

//Convert it back to array (In case you need it to be array not ArrayList) 
Integer[] randomNums = al.toArray(new Integer[100]); 

//result 
for (int i : randomNums) { 
    System.out.println(i); 
} 
+0

시도 주셔서 감사합니다, 정말 고마워 :)하지만 나는 처음 10 개의 배열을 무작위로 생성하고 다른 90 개 배열과 나란히 배치하기를 원합니다. – Tony

관련 문제