总和固定产生随机数

比如:总和为350,共生成5个随机数。
要求:0<=随机数<=100,且随机数为整数。

package com.chapter_3;
import java.util.*;

public class Sum350 {
public static void main(String[] args){
int[] a = new int[5];
boolean success = false;

while(!success){
a[0] = (int)(Math.random()*101);
a[1] = (int)(Math.random()*101);
if((a[0]+a[1])>50){
a[2] = (int)(Math.random()*101);
if((a[0]+a[1]+a[2])>150){
a[3] = (int)(Math.random()*101);
if((a[0]+a[1]+a[2]+a[3])>250){
a[4] = (350-a[0]-a[1]-a[2]-a[3]);
success = true;
}
}
}
}
Arrays.sort(a);
for(int i=0; i<5; i++){
System.out.println(a[i]);
}
System.out.println(a[0]+a[1]+a[2]+a[3]+a[4]);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-09-22
=int(round()*100)这样可以产生一个0到100的随机整数。但是不能控制他们的总和是350
第2个回答  2019-03-24
package
com.chapter_3;
import
java.util.*;
public
class
Sum350
{
public
static
void
main(String[]
args){
int[]
a
=
new
int[5];
boolean
success
=
false;
while(!success){
a[0]
=
(int)(Math.random()*101);
a[1]
=
(int)(Math.random()*101);
if((a[0]+a[1])>50){
a[2]
=
(int)(Math.random()*101);
if((a[0]+a[1]+a[2])>150){
a[3]
=
(int)(Math.random()*101);
if((a[0]+a[1]+a[2]+a[3])>250){
a[4]
=
(350-a[0]-a[1]-a[2]-a[3]);
success
=
true;
}
}
}
}
Arrays.sort(a);
for(int
i=0;
i<5;
i++){
System.out.println(a[i]);
}
System.out.println(a[0]+a[1]+a[2]+a[3]+a[4]);
}
}
相似回答