I need to generate 6 float numbers whose sum will be between 30 and 36.
For example, num1 = 4.40, num2 = 6.20, num3 = 5.20, num4 = 5.30, num5 = 4.80, num6 = 4.70
The numbers must be in a range between 3.50 and 8.
I need to generate 6 float numbers whose sum will be between 30 and 36.
For example, num1 = 4.40, num2 = 6.20, num3 = 5.20, num4 = 5.30, num5 = 4.80, num6 = 4.70
The numbers must be in a range between 3.50 and 8.
Here is a brute-force solution:
import java.util.Random;
public class Solution {
private static Random random = new Random();
private static double[] arr = new double[6];
private static double solve() {
double sum;
while (true) {
sum = 0;
for (int i = 0; i < 6; i++)
sum += arr[i] = 3.5 + random.nextDouble() * (8 - 3.5);
if (sum <= 36 && sum >= 30) break;
}
// 2 decimal places
for (int i = 0; i < 6; i++) {
arr[i] = (int)(arr[i] * 100);
arr[i] /= 100;
}
return sum;
}
public static void main(String[] args) {
System.out.println("The sum is " + solve() + "\nNumbers:");
for (double i : arr)
System.out.println(i);
}
}