生成多个范围之间的随机数

Kar*_*lic 6 java random range

我理解如何制作一个介于两个数字之间的随机数:

1 + (int)(Math.random() * ((10 - 1) + 1))
Run Code Online (Sandbox Code Playgroud)

要么

Min + (int)(Math.random() * ((Max - Min) + 1))
Run Code Online (Sandbox Code Playgroud)

但是,如何生成一个落入多个范围的随机数?

例如:数字可以介于1到10之间或介于50到60之间

MrL*_*ore 5

我会选择这样的东西,让你可以用你喜欢的范围来做:

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

class RandomInRanges
{
    private final List<Integer> range = new ArrayList<>();

    RandomInRanges(int min, int max)
    {
        this.addRange(min, max);
    }

    final void addRange(int min, int max)
    {
        for(int i = min; i <= max; i++)
        {
            this.range.add(i);
        }
    }

    int getRandom()
    {
        return this.range.get(new Random().nextInt(this.range.size()));
    }

    public static void main(String[] args)
    {
        RandomInRanges rir = new RandomInRanges(1, 10);
        rir.addRange(50, 60);
        System.out.println(rir.getRandom());
    }
}
Run Code Online (Sandbox Code Playgroud)