2012-01-29 35 views
7

Tôi có một mảng giá trị số và tôi muốn chọn ngẫu nhiên một giá trị từ trong mảng đó và sau đó chèn nó vào biến số int.Chọn giá trị ngẫu nhiên từ một Array

Tôi không chắc chắn bạn cần xem mã nào. Vì vậy,

Đây là vòng lặp for mà tôi đang sử dụng để tạo 13 số (1-13) và chèn chúng vào Array.

int clubsArray []; 
    clubsArray = new int [13]; 

    for(int i = 0; i < clubsArray.length; i++) { 

     clubsArray[i] = i +1; 

    } 

đó làm việc tốt, nhưng bây giờ tôi cần phải lựa chọn ví dụ 2 giá trị ngẫu nhiên từ trong mảng đó (và sau đó chèn nó vào một biến sẽ được sử dụng sau này.

Tôi đã nhìn xung quanh trên nhiều trang web và tôi đã thấy những thứ như ArrayList<String> để chèn các giá trị vào một Mảng và sau đó sử dụng Random generator = new Random() để chọn giá trị từ mảng đó và sau đó .remove() để loại bỏ nó khỏi mảng. Nhưng khi nào tôi đã sử dụng nó thì không không hoạt động.

+0

bạn không thực sự "chèn" vào biến int, thay vì "gán" thành :) –

+0

bản sao có thể có của [Cách tạo số ngẫu nhiên với Java từ danh sách số đã cho] (http://stackoverflow.com/câu hỏi/1247915/how-to-generate-a-ngẫu nhiên-số-với-java-từ-cho-danh sách-of-số) – Mark

Trả lời

24

Chỉ clubsArray[new Random().nextInt(clubsArray.length)] sẽ hoạt động

Hoặc để ngẫu nhiên thứ tự các phần tử, hãy sử dụng List<?> clubsList=Arrays.asList(clubsArray); Collections.shuffle(clubsList);.

+0

Cảm ơn bạn. Nếu tôi sử dụng nó, tôi có nên loại bỏ nó khỏi Array không? (để ngăn chặn các bản sao được chọn ở giai đoạn sau) – Craig

+0

@Craig: Loại bỏ một phần tử trong một mảng là O (n), vì vậy có lẽ đó không phải là những gì bạn muốn làm. Có lẽ bạn muốn trộn toàn bộ mảng đầu tiên? (như một trong những sẽ shuffe một cỗ bài) [This] (http://stackoverflow.com/a/6127606/165544) là làm thế nào để làm điều đó trong C – danr

+0

Vâng, có lẽ, hoặc thay vào đó kiểm tra nếu mảng đầu ra đã có nó và nếu có, hãy chọn một người khác. –

Các vấn đề liên quan