Java 从MathRandom生成的数字打印最大数字
我的任务是使用循环打印1000000个介于0和1之间的随机数 我选择使用函数Math.random来实现这一点,使用for循环来创建1000000 现在我需要打印数字的最大值…但是如何打印呢?是否可以将它们放入一个数组中 以下是我目前的代码: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+
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