Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从MathRandom生成的数字打印最大数字_Java_Loops_Math_For Loop_Random - Fatal编程技术网

Java 从MathRandom生成的数字打印最大数字

Java 从MathRandom生成的数字打印最大数字,java,loops,math,for-loop,random,Java,Loops,Math,For Loop,Random,我的任务是使用循环打印1000000个介于0和1之间的随机数 我选择使用函数Math.random来实现这一点,使用for循环来创建1000000 现在我需要打印数字的最大值…但是如何打印呢?是否可以将它们放入一个数组中 以下是我目前的代码: public class GenerateRandomNumbers { public static void main(String[]args) { for(int i=0; i < 1000000; i+

我的任务是使用循环打印1000000个介于0和1之间的随机数

我选择使用函数Math.random来实现这一点,使用for循环来创建1000000

现在我需要打印数字的最大值…但是如何打印呢?是否可以将它们放入一个数组中

以下是我目前的代码:

public class GenerateRandomNumbers    
{    
public static void main(String[]args)
    {
        for(int i=0; i < 1000000; i++){
        System.out.println(Math.random());
        }       
    }   
}
公共类生成器域编号
{    
公共静态void main(字符串[]args)
{
对于(int i=0;i<1000000;i++){
System.out.println(Math.random());
}       
}   
}

您只需跟踪当前最大值,并相应地进行更新:

public static void main(String[]args) {
    double max = 0.0d;
    for(int i=0; i < 1000000; i++){
        double x = Math.random();
        max = Math.max(max,x);
        System.out.println(x);
    }
    System.out.println("The maximum is "+max);
}
publicstaticvoidmain(字符串[]args){
双最大值=0.0d;
对于(int i=0;i<1000000;i++){
double x=Math.random();
max=Math.max(max,x);
系统输出println(x);
}
System.out.println(“最大值为”+max);
}
代码的工作原理如下:根据的规范,我们知道最低值为
0.0
,因此我们首先将
max
设置为
0.0d

接下来,我们迭代
1000000
样本。在打印值之前,我们首先将其存储在
双x
中。接下来我们更新最大值:
max
存储到目前为止的最大值,通过计算
max
x
的值,我们还包括
x

最后,在
for
循环之后,我们可以确定
max
包含遇到的最大值,并且我们可以打印它(或者用它做其他事情)。

问自己“我可以动态计算最大值吗?”,即使用一些归纳规则而不存储数字

更准确地说,假设您计算了前N个数字中的最大值。如果你计算下一个数,你能先得到N+1的最大值吗

答案显然是肯定的,因为“N+1个第一个数字的最大值是N+1个数字的最大值和N个第一个数字的最大值”。换句话说,如果新的数字大于目前为止的最大值,它将取代它

还请注意,第一个数字的“最大值”就是该数字

因此,在伪代码中

Maximum= Random()
for i in range(1, 1000000):
    R= Random()
    if R > Maximum:
        Maximum= R
您可以使用一个稍微简单的变量,该变量基于规则“无数字的最大值通常是可能的最小值”,此处为0



这种思维方式在编程中引入了一个重要的概念:循环不变量。在循环的整个执行过程中,将保持以下条件:“变量Maximum保存到目前为止已计算的最大值”。从不变量的角度思考有助于算法的设计。

只要保留当前最大值,并在生成更大的数字时更改它(将随机值存储在变量中,必要时更新最大值,然后打印出来)。谢谢!我正在考虑在变量中存储值等,但不知道Math.max函数。也谢谢你解释清楚。
Maximum= 0
for i in range(0, 1000000):
    R= Random()
    if R > Maximum:
        Maximum= R