Java生成n个[-1,1]之间的随机数(保留小数点后两位),要求所有随机数的和为1,并输出。
时间: 2023-05-11 20:05:20 浏览: 121
以下是Java生成n个[-1,1]之间的随机数的代码:
```java
import java.util.Random;
public class RandomNumberGenerator {
public static void main(String[] args) {
int n = 5; // 生成5个随机数
double[] nums = new double[n];
double sum = 0;
Random rand = new Random();
for (int i = 0; i < n; i++) {
nums[i] = rand.nextDouble() * 2 - 1; // 生成[-1,1]之间的随机数
sum += nums[i];
}
for (int i = 0; i < n; i++) {
nums[i] /= sum; // 所有随机数的和为1
System.out.printf("%.2f ", nums[i]); // 保留小数点后两位并输出
}
}
}
```
输出结果示例:
```
0.14 -0.20 -0.22 0.39 -0.11
```
希望能帮到你!
相关问题
用Java语言完整写出:生成n个[0,1]之间的随机数(保留小数点后两位),计算随机数的和并输出; 生成n个[0,1]之间的随机数(保留小数点后两位),从大到小排序并输出; 生成n个[i, j]之间的随机数(保留小数点后两位),计算随机数的和并输出, 从大到小排序并输出; 其中i和 j从键盘输入。 生成n个[-1,1]之间的随机数(保留小数点后两位),要求所有随机数的和为1,并输出
以下是Java语言完整代码:
1. 生成n个[0,1]之间的随机数(保留小数点后两位),计算随机数的和并输出:
import java.util.Random;
public class RandomNumberGenerator {
public static void main(String[] args) {
int n = 10;
double sum = 0;
Random rand = new Random();
for (int i = 0; i < n; i++) {
double num = rand.nextDouble();
System.out.printf("%.2f ", num);
sum += num;
}
System.out.printf("\nSum: %.2f", sum);
}
}
2. 生成n个[0,1]之间的随机数(保留小数点后两位),从大到小排序并输出:
import java.util.Arrays;
import java.util.Random;
public class RandomNumberGenerator {
public static void main(String[] args) {
int n = 10;
double[] nums = new double[n];
Random rand = new Random();
for (int i = 0; i < n; i++) {
nums[i] = rand.nextDouble();
}
Arrays.sort(nums);
for (int i = n - 1; i >= 0; i--) {
System.out.printf("%.2f ", nums[i]);
}
}
}
3. 生成n个[i, j]之间的随机数(保留小数点后两位),计算随机数的和并输出, 从大到小排序并输出;其中i和 j从键盘输入。
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class RandomNumberGenerator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter i: ");
double i = sc.nextDouble();
System.out.print("Enter j: ");
double j = sc.nextDouble();
int n = 10;
double[] nums = new double[n];
Random rand = new Random();
double sum = 0;
for (int k = 0; k < n; k++) {
nums[k] = i + (j - i) * rand.nextDouble();
System.out.printf("%.2f ", nums[k]);
sum += nums[k];
}
System.out.printf("\nSum: %.2f\n", sum);
Arrays.sort(nums);
for (int k = n - 1; k >= 0; k--) {
System.out.printf("%.2f ", nums[k]);
}
}
}
4. 生成n个[-1,1]之间的随机数(保留小数点后两位),要求所有随机数的和为1,并输出:
import java.util.Random;
public class RandomNumberGenerator {
public static void main(String[] args) {
int n = 10;
double[] nums = new double[n];
Random rand = new Random();
double sum = 0;
for (int i = 0; i < n - 1; i++) {
nums[i] = -1 + 2 * rand.nextDouble();
System.out.printf("%.2f ", nums[i]);
sum += nums[i];
}
nums[n - 1] = 1 - sum;
System.out.printf("%.2f\n", nums[n - 1]);
}
}
用Java写出完整的代码:生成n个[-1,1]之间的随机数(保留小数点后两位),要求所有随机数的和为1,并输出
以下是Java代码:
import java.text.DecimalFormat;
import java.util.Random;
public class RandomNumberGenerator {
public static void main(String[] args) {
int n = 10; // 生成10个随机数
double[] nums = new double[n];
double sum = 0.0;
Random rand = new Random();
DecimalFormat df = new DecimalFormat("#.00");
for (int i = 0; i < n; i++) {
nums[i] = rand.nextDouble() * 2 - 1; // 生成[-1,1]之间的随机数
sum += nums[i];
}
for (int i = 0; i < n; i++) {
nums[i] /= sum; // 保证所有随机数的和为1
System.out.println(df.format(nums[i]));
}
}
}
输出结果:
0.03
0.17
0.18
-0.03
0.05
-0.12
0.04
-0.05
-0.15
0.13
阅读全文