我想生成一个在指定范围和一定大小之间的随机数列表。
我尝试使用流,并且我认为这可能是最好的解决方案。我无法自己使用它,但是我对流的了解还不够。
以下代码可解决我的问题,但我希望能够使用Java api中的某些功能。如果要使用流的map
方法,则需要使用带有n -> ThreadLocalRandom.current().nextInt(min, max + 1)
的使用者,但是我无法在流的末尾适当收集数据。
import java.util.*;
import java.util.concurrent.ThreadLocalRandom;
class Scratch {
public static void main(String[] args) {
System.out.println(getRandList(100, 0, 10));
}
/**
* Get n random integers within the range of min and max
*/
static List<Integer> getRandList(int size, int min, int max) {
List<Integer> integers = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
integers.add(ThreadLocalRandom.current().nextInt(min, max + 1));
}
return integers;
}
}
引用的重复项不能直接解决我的问题,我想要一个List<Integer>
,而Oleksandr的解决方案提供了一个IntStream
。
答案 0 :(得分:1)
怎么样,
List<Integer> integers = IntStream.range(0, size)
.mapToObj(i -> ThreadLocalRandom.current().nextInt(min, max + 1))
.collect(Collectors.toList());
答案 1 :(得分:0)
您拥有“随机”类,用于获取随机数。
示例:
Random random = new Random();
random.nextInt(bound);
之后,循环执行此操作。
答案 2 :(得分:0)
这是我的第一个念头-
List<Integer> nums = Arrays.asList(1,2,3,4,5);
List<Integer> list = nums.stream().map(n->ThreadLocalRandom.current().nextInt(0,11)).collect(Collectors.toList());
System.out.println(list);