/**
* 生成和为指定数的6个随机数
* 比如和为100 ,如果生成的这个随机数加起来等于100,则打印这6个数。
* 数据类型int
*/
public static void unequal() {
int max=100; //最大为100
int min=1; //最小为10
int num=6; //一共有6个数
int range; //每个数可取值范围
int remain_num; //还剩几个数
int sum=0; //已得数的总和
int[] r=new int[num];
for(int i=0;i
if(i==num-1){
r[i]=max-sum; //最后一个数=最大数-已得数的总和
}
else{
remain_num=num-1-i; //还剩几个数,如循环到第一个数时,i为0,remain_num=3
range=max-sum-min*remain_num; //第一个数的取值范围为1~70
if(range>0){
Random rr =new Random();
r[i]=rr.nextInt(range-min+1)+min;
sum=sum+r[i];
}
}
}
for (int i : r) {
System.out.println(i);
}
}
/**
* 生成和为指定数的6个随机数
* 比如和为100 ,如果生成的这个随机数加起来等于100,则打印这6个数。
* 数据类型double
*/
public static void unequals() {
double sum1=0;
double max=100; //最大为100
double min=0.01; //最小为10
int num=6; //一共有6个数
double range; //每个数可取值范围
int remain_num; //还剩几个数
double sum=0; //已得数的总和
double[] r=new double[num];
for(int i=0;i
if(i==num-1){
r[i]=max-sum; //最后一个数=最大数-已得数的总和
}
else{
remain_num=num-1-i; //还剩几个数,如循环到第一个数时,i为0,remain_num=3
range=max-sum-min*remain_num; //第一个数的取值范围为1~70
if(range>0){
Random rr =new Random();
r[i]=rr.nextDouble()*(range-min+0.01)+min;
sum=sum+r[i];
}
}
}
for (double i : r) {
System.out.println(i);
sum1+=i;
}
System.out.println("总和"+sum1);
}