Come circa il seguente approccio: casuale la scelta di un intervallo di un uso che vanno a generage il vostro numero a caso, per questo dovrete mettere le gamme in qualche lista o array
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 per gli intervalli richiesti, ma probabilmente poco pratici per intervalli con troppi numeri. – Javier
Funziona alla grande! Anche se in realtà non ho idea di come funzioni. –
@KarloDelalic Fondamentalmente si tratta solo di un elenco di tutti i numeri che si trovano nelle gamme che gli si assegnano, quindi preleva un numero casuale da quella lista, che è quindi un numero casuale da uno qualsiasi degli intervalli. – MrLore