/* package whatever; // don't place package name! */
import java.util.*;
import java.util.concurrent.ThreadLocalRandom;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
public static void main
(String[] args
) {
Ranges r = new Ranges()
.add(233, 333)
.add(377, 477)
.add(610, 710);
System.
out.
println(r.
random());
}
}
class Ranges {
private List<Range> ranges = new ArrayList<>();
Ranges add(long min, long max) {
this.ranges.add(new Range(min, max));
return this;
}
long random() {
int index = ThreadLocalRandom.current().nextInt(ranges.size());
return this.ranges.get(index).random();
}
}
class Range {
private long lower;
private long upper;
Range(long lower, long upper) {
this.lower = lower;
this.upper = upper;
}
long random() {
return ThreadLocalRandom.current().nextLong(this.lower, this.upper);
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkTG9jYWxSYW5kb207CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCiAgICAgICAgUmFuZ2VzIHIgPSBuZXcgUmFuZ2VzKCkKICAgICAgICAgICAgLmFkZCgyMzMsIDMzMykKICAgICAgICAgICAgLmFkZCgzNzcsIDQ3NykKICAgICAgICAgICAgLmFkZCg2MTAsIDcxMCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHIucmFuZG9tKCkpOwoKCX0KfQoKY2xhc3MgUmFuZ2VzIHsKICAgIHByaXZhdGUgTGlzdDxSYW5nZT4gcmFuZ2VzID0gbmV3IEFycmF5TGlzdDw+KCk7CgogICAgUmFuZ2VzIGFkZChsb25nIG1pbiwgbG9uZyBtYXgpIHsKICAgICAgICB0aGlzLnJhbmdlcy5hZGQobmV3IFJhbmdlKG1pbiwgbWF4KSk7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogICAgbG9uZyByYW5kb20oKSB7CiAgICAgICAgaW50IGluZGV4ID0gVGhyZWFkTG9jYWxSYW5kb20uY3VycmVudCgpLm5leHRJbnQocmFuZ2VzLnNpemUoKSk7CiAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VzLmdldChpbmRleCkucmFuZG9tKCk7CiAgICB9Cn0KCmNsYXNzIFJhbmdlIHsKCiAgICBwcml2YXRlIGxvbmcgbG93ZXI7CiAgICBwcml2YXRlIGxvbmcgdXBwZXI7CgogICAgUmFuZ2UobG9uZyBsb3dlciwgbG9uZyB1cHBlcikgewogICAgICAgIHRoaXMubG93ZXIgPSBsb3dlcjsKICAgICAgICB0aGlzLnVwcGVyID0gdXBwZXI7CiAgICB9CgogICAgbG9uZyByYW5kb20oKSB7CiAgICAgICAgcmV0dXJuIFRocmVhZExvY2FsUmFuZG9tLmN1cnJlbnQoKS5uZXh0TG9uZyh0aGlzLmxvd2VyLCB0aGlzLnVwcGVyKTsKICAgIH0KfQ==