JAVA PROGRAMMING: Attached is a simple program, RandomDoubles, to generate a giv
ID: 3686175 • Letter: J
Question
JAVA PROGRAMMING:
Attached is a simple program, RandomDoubles, to generate a given number of random numbers within a range. Rewrite the indicated method to use a stream.
import java.util.Scanner;
public class RandomDoubles {
public static void main(String[] args) {
Scanner kybd = new Scanner(System.in);
System.out.println("Enter ceiling, floor, number of samples: ");
double ceil = kybd.nextDouble();
double floo = kybd.nextDouble();
int numSamples = kybd.nextInt();
if (floo >= ceil || ceil > 1 || floo > 1) {
System.out.println("invalid ceiling, floor");
System.exit(0);
}
double avg = calcDoubles(floo, ceil, numSamples);
System.out.println("Average is " + avg);
}
private static double calcDoubles(double floo, double ceil, int numSamples) {
// rewrite this method to use streams
double[] samples = genDoubles(floo, ceil, numSamples);
double tot = 0;
for (int i = 0; i < samples.length; i++) {
tot += samples[i];
}
double avg = tot / samples.length;
return avg;
}
public static double[] genDoubles(double floor, double ceiling, int num) {
int cnt = 0;
double range = ceiling - floor;
double[] rv = new double[num];
while (cnt < num) {
double v = Math.random();
v = v * range + floor;
rv[cnt++] = v;
}
return rv;
}
}
Explanation / Answer
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class RandomDoubles {
public static void main(String[] args) {
Scanner kybd = new Scanner(System.in);
InputStream is = null;
BufferedReader br = null;
double ceil=0,floo=10;
int numSamples=10;
try
{
is = System.in;
br = new BufferedReader(new InputStreamReader(is));
System.out.println("Enter ceiling: ");
ceil = Double.parseDouble(br.readLine());
System.out.println("Enter floor: ");
floo = Double.parseDouble(br.readLine());
System.out.println("Enter number of samples: ");
numSamples = Integer.parseInt(br.readLine());
}
catch (Exception ioe)
{
System.out.println("Exception while reading input " + ioe);
}
if (floo >= ceil || ceil > 1 || floo > 1) {
System.out.println("invalid ceiling, floor");
System.exit(0);
}
double avg = calcDoubles(floo, ceil, numSamples);
System.out.println("Average is " + avg);
}
private static double calcDoubles(double floo, double ceil, int numSamples) {
// rewrite this method to use streams
double[] samples = genDoubles(floo, ceil, numSamples);
double tot = 0;
for (int i = 0; i < samples.length; i++) {
tot += samples[i];
}
double avg = tot / samples.length;
return avg;
}
public static double[] genDoubles(double floor, double ceiling, int num) {
int cnt = 0;
double range = ceiling - floor;
double[] rv = new double[num];
while (cnt < num) {
double v = Math.random();
v = v * range + floor;
rv[cnt++] = v;
}
return rv;
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.