Java - 创建具有给定范围的 IntStream,然后使用映射函数随机化每个元素

标签 java random java-8 java-stream

所以我创建了一个 IntStream,我给它一个 1 - 9 的范围。我希望能够使用 map 函数获取给定范围 (1-9) 中的每个元素并随机化每个元素。

本质上,我想在每次程序运行时以不同的顺序流式传输数字 1 - 9。 (我对其他想法持开放态度,但它必须使用流)。

我听说过使用 Java 的 Random 类,但我不确定如何在每个元素的映射上实现它。

我试过这样做但是有错误:

 IntStream.range(1, 9).map(x -> x = new Random()).forEach(x -> System.out.println(x));

如有任何帮助,我们将不胜感激。

最佳答案

也可以使用 Random.ints 以这种方式完成:

new Random().ints(1,10)
        .distinct()
        .limit(9)
        .forEach(System.out::println);

输出:

9 8 4 2 6 3 5 7 1

编辑

如果您需要一个包含这些值的Stream,那么请执行以下操作:

Stream<Integer> randomInts = new Random().ints(1, 10)
        .distinct()
        .limit(9)
        .boxed();

如果您需要一个包含值的List,那么这样做:

List<Integer> randomInts = new Random().ints(1, 10)
        .distinct()
        .limit(9)
        .boxed()
        .collect(Collectors.toList());

关于Java - 创建具有给定范围的 IntStream,然后使用映射函数随机化每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48192913/

相关文章:

java - Java中如何将ArrayList数据类型插入MySQL数据库

java - 如何手动将节点放入JavaCC堆栈上?

java - 使用ANTLR(或任何其他工具)编写术语重写解析器/表达式评估器

java - 根据用户在 Java 8 中选择的属性对列表进行动态排序

java - 如何最好地重构 Java 中的变量实例化重复?

java - 当键已存在于 map 中时将值推送到 map

python - 从概率矩阵中随机选择

java - 密码随机生成器 : creates the same password

c - 是否可以查看下一个兰特值

java - OCSP 检查 Java 安全套接字