小弟的问题是可以描述为:
现在有编号为1-20的20类不同的苹果,每次从这20类只取一个,(注意每种类型苹果个数不限)允许类型重复,
现在取上10次,要求取到的苹果的所有类型为一确定数,如8种,或者在一个区间上,如为5-8种。注意,是在取了10次的基础上。
然后还有一个随机数问题:
在上面的基础上,我现在已经有了10个苹果,他们的编号允许存在重复。现在分3次拿走完,每次拿若干个,怎样确定拿走的的苹果的编号?
现在有编号为1-20的20类不同的苹果,每次从这20类只取一个,(注意每种类型苹果个数不限)允许类型重复,
现在取上10次,要求取到的苹果的所有类型为一确定数,如8种,或者在一个区间上,如为5-8种。注意,是在取了10次的基础上。
然后还有一个随机数问题:
在上面的基础上,我现在已经有了10个苹果,他们的编号允许存在重复。现在分3次拿走完,每次拿若干个,怎样确定拿走的的苹果的编号?
import java.util.*;public class Apple {
public static void main(String[] args) {
Random rd = new Random();
List<Integer> apples = new ArrayList<Integer>();
//随机生成取出的苹果的编号,并放入集合apples,也就是模拟题目中
//取苹果的操作。
int num;
for(int i=0; i<10; i++) {
num = rd.nextInt(20) + 1;//加1是为了防止出现编号为0的苹果
apples.add(num);
}
//第一次拿走苹果后,就从集合中删除,第二次从剩下的苹果中拿,
//第三次把剩下的全部拿走
int count;//拿走的苹果的编号
int[] arr = new int[apples.size()];//保存每一次拿走的苹果编号
int k;
for(int i=0; i<3; i++) {
if(i < 2) {//前两次拿苹果
num = rd.nextInt(apples.size() - 1);
for(int j=0; j<num; j++) {
count = rd.nextInt(num);
arr[j] = count;
System.out.println("第" + (i + 1) + "次拿出的苹果:" + apples.get(count)); //打印拿走的苹果编号
}
k = 0;
while(arr[k] != 0) {
apples.remove(arr[k]); //一次拿完后,从集中删除
k++;
}
} else {//第三次拿走剩下的苹果
for(int j=0; j<apples.size(); j++) {
count = apples.size() - 1;
System.out.println("第3次拿出的苹果:" + apples.get(count));
apples.remove(count);
}
}
}
}
}这个应该能够满足楼主的需求!