Làm thế nào về phương pháp sau đây: ngẫu nhiên chọn một loạt việc sử dụng mà dao động để generage số ngẫu nhiên của bạn, cho rằng bạn sẽ phải đặt dãy bạn trong một số danh sách hoặc mảng
public class RandomRangeGenerator {
class Range {
public int min, max;
public Range(int min, int max) { this.min = min; this.max = max; }
}
@Test
public void generate() {
List<Range> ranges = new ArrayList<>();
ranges.add(new Range(1, 10));
ranges.add(new Range(50, 60));
List<Integer> randomNumbers = generateRandomNumbers(ranges, 10);
System.out.println(randomNumbers.toString());
for(Integer i : randomNumbers) {
Assert.assertTrue((i >= 1 && i <= 10) || (i >= 50 && i <= 60));
}
}
private List<Integer> generateRandomNumbers(List<Range> ranges, int numberOfNumbers) {
List<Integer> randomNumbers = new ArrayList<>(numberOfNumbers+1);
while(numberOfNumbers-- > 0) {
Range range = ranges.get(new Random().nextInt(ranges.size()));
randomNumbers.add(range.min + (int)(Math.random() * ((range.max - range.min) + 1)));
}
return randomNumbers;
}
}
Fine cho phạm vi được yêu cầu, nhưng có thể không thực tế đối với các phạm vi có quá nhiều số. – Javier
Công trình này tuyệt vời! Mặc dù tôi không thực sự có bất kỳ đầu mối nào về cách thức hoạt động của nó. –
@KarloDelalic Về cơ bản, nó chỉ tạo một danh sách tất cả các số nằm trong dãy bạn đưa ra, sau đó chọn một số ngẫu nhiên từ danh sách đó, do đó là một số ngẫu nhiên từ bất kỳ phạm vi nào. – MrLore