全局文档编号:1451java
一个朋友问了我这样一个问题:十个随机天然数,相加之和等于100,怎么分红和等于50的两组?以为挺有意思,就写代码玩了一下。算法
一个家庭有10个小孩,家里的苹果树上结了100个苹果,咱们须要将小孩随意分红2组(每组人数1-9),要求两个组都分到50个苹果数组
/** * @author wangyao * @date 2020-5-21 15:57 * @description: 需求:十个随机数,相加等于100,怎么分红相加之和等于50的两组 */ public class AlgorithmTest { public static void main(String[] args) { /** * 算法实现描述 * 一、设置两个数组A,B,A数组大小1-9随机,假设a,另外一个数组10-a * 二、针对A数组进行50次循环,每次任取一个数组元素+1 * 三、针对B数组进行50次循环,每次任取一个数组元素+1 * 四、打印分组结果 */ System.out.println("要求:十个随机数,相加等于100,我要分红相加之和等于50的两组..."); System.out.println(); System.out.println("分完啦!"); Random r = new Random(); int aLength = 0; while (aLength == 0) { aLength = r.nextInt(10); } int[] a = new int[aLength]; int[] b = new int[10-aLength]; for (int i = 0; i < 50; i++) { int luckyGuyInA = r.nextInt(aLength); a[luckyGuyInA]++; int luckyGuyInB = r.nextInt(10 - aLength); b[luckyGuyInB]++; } System.out.print("A组数据:"); int sumA = 0,sumB = 0; StringBuilder sb = new StringBuilder(); for (int i = 0 ; i < aLength; i++) { sumA += a[i]; System.out.print(a[i] + " "); sb.append(a[i] + " "); } System.out.println(); System.out.println("和:" + sumA); System.out.print("B组数据:"); for (int i = 0 ; i < 10-aLength; i++) { sumB += b[i]; System.out.print(b[i] + " "); sb.append(b[i] + " "); } System.out.println(); System.out.println("和:" + sumB); System.out.println("10个随机数分别是:" + sb.toString()); } }