我可以生成随机数,但无法正确识别我的一组数字中的最小值和最大值

时间:2018-07-16 04:31:06

标签: java

因此,下面是一个脚本,该脚本将生成n个数量在1到100之间的随机数的列表。我需要找到它,在运行脚本后,还可以识别命令提示符下生成的随机数的maxmin。我一直遇到这个问题,它只会将数字重复2次。 n= 2: 12 12 12 43 43 43 22 22 22

时的示例

我认为我的问题是,当我使用int min = Math.min(b,b);时,for循环也想重复该部分。但是,如果我把它放在脚本之外,那么我将不再使用变量b。

int n = Integer.parseInt(args[0]);
for(int i = 0; i < n; i++)
{
int b = (int)(Math.random() * (100 - 1)) + 1;
System.out.println(b);
}

3 个答案:

答案 0 :(得分:1)

如果您坚持使用数学库,则应将第一个数字视为min和max。

int n = Integer.parseInt(args[0]);
int max = 0;
int min = 0;
for(int i = 0; i < n; i++){
   int b = (int)(Math.random() * (100 - 1)) + 1;
   if(i == 0){
      min = b;
      max = b;
   }else{
      min = Math.min(min,b);
      max = Math.max(max,b);
   }
   System.out.println(b);
 }
 System.out.println(String.format("Min:%d , Max:%d",min,max));

答案 1 :(得分:0)

  • Random类可以生成个随机数流(使用 下/上限)。
  • 可以将
  • IntSteam收集到IntSummaryStatistics中,它们提供有关流式数据的最小/最大/平均/总和/计数信息。
  • 流式传输时,您可以通过身份功能输出(或处理)项目。

将所有这些结合在一起,可以得到一个简单而优雅的解决方案:

int n=Integer.parseInt(args[0]);
IntSummaryStatistics statistics = new Random()
    .ints(1, 100)
    .limit(n)
    .map(i -> {
        System.out.println(i);
        return i;
    }).summaryStatistics();

System.out.println("min: " + statistics.getMin());
System.out.println("max: " + statistics.getMax());

答案 2 :(得分:-1)

首先,您所提问题中的脚本脚本是指编程语言(javascript)吗? 或您的意思是单词脚本(可能在Java中,我们称其为类或程序,而不是脚本,单词脚本主要用于python中) 快速简便的方法是将生成的元素推入数组并对其进行排序

d3.select(this)
  .selectAll("text")
  .remove();