62,614
社区成员
发帖
与我相关
我的任务
分享
private static int[] getRandomArray(int size) {
int[] percent = new int[size];
Arrays.fill(percent, 1);//保证最小的数==1
int s = 100 - size;
int k = 5;//常数,==1比较平均的分配,越大越不平均。
Random r = new Random();
while (s > 0) {
int x = r.nextInt(size);
int y = r.nextInt(k > s ? s : k) + 1;
percent[x] += y;
s -= y;
}
return percent;
}
public static void go() {
Random r = new Random();
List<Integer> list = new ArrayList<Integer>();
int sum = 0;
while (true) {
int t = 0;
while (t == 0) {
t = r.nextInt(100);
}
sum += t;
if (sum == 100) {
list.add(t);
System.out.println(list);
return;
}
if (sum < 100) {
list.add(t);
}
if (sum > 100) {
sum = 0;
list.clear();
}
}
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++)
go();
}
private static int[] getRandomArray(int size) {
int[] percent = new int[size];
int s = 100;
double k = 0.6;//波动常数,位于0~1之间。如果=0,平均分配;=1,最大波动
for (int i = 0; i < size - 1; i++) {
double x = s / (size - i);
double y = Math.random() - 0.5;
double z = x + (y > 0 ? s - x : x) * y * k;
percent[i] = (int) z;
s -= percent[i];
}
percent[size - 1] = s;
return percent;
}
public static int[] go() {
Random r = new Random();
List<Integer> list = new ArrayList<Integer>();
int sum = 0;
while (true) {
int t = 0;
while (t == 0) {
t = r.nextInt(100);
}
sum += t;
if (sum < 100) {
list.add(t);
}
if (sum == 100) {
list.add(t);
int[] a = new int[list.size()];
for (int i = 0; i < a.length; i++) {
a[i] = list.get(i);
}
return a;
}
if (sum > 100) {
sum -= t;
}
}
}
public static void main(String[] args) {
System.out.println(Arrays.toString(go()));
}
import java.util.Stack;
public class Test {
private static Stack<Integer> array = new Stack<Integer>();
public static void main(String[] args) {
caifen(100, 0);
}
public static void caifen(int n, int yushu) {
if (n == 0) {
System.out.println(array);
return;
}
for (int i = yushu + 1; i <= n; i++) {
array.push(i);
caifen(n - i, i);
array.pop();
}
}
}
public static void main(String[] args){
Random r = new Random();//r用来产生一个0-100的随机数。
List<Integer> list = new ArrayList<Integer>();//因为不知道要被分成几分,用List更好些。
boolean flag = true;
int sum = 100;
while(flag){
int n = r.nextInt(101);
if(n==0){
continue;
}else if((sum-n)>0){
list.add(n);
sum = sum-n;
}else if((sum-n)==0){
list.add(n);
flag = false;
}else if((sum-n)<0){
continue;
}
}
for(Integer a:list){
System.out.println(a);
}
}