新手学习JAVA核心技术时的一个小问题 java 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 假如我有一个10个数的数组,1 2 3 4 5 6 7 8 9 10,第一次我取一个10以内的随机数,例如取到的是3,则把3写入result数组,并且将源数组3和10对调一下,则原数组变成了1 2 10 4 5 6 7 8 9 3,接着我取一个9以内的随机数,这样不管取到的是几,我只能取前面9个数中的一个,3是第10个,肯定取不到,接着取8以内的随机数,依次类推,永远都取不到重复的。不知道你又没有明白我的意思。 a[index]=a[n-1] (n是a数组的长度100) 楼主看一下这个n是不是变化的,n不变没法去重。楼上说的是一种方法,可以实现你说的效果。 代码如下:import java.util.*;public class LotteryDrawing{ public static void main(String[] args){ // 按照你的例子 原数组长度:10, 彩票数组长度:8 // [注意1]:此时原数组长度值等于原数组的真正长度 int 原数组长度值 = 10,k = 8; int[] src = new int[原数组长度值]; for(int i=0; i<原数组长度值; i++){ src[i] = i+1; //[注意4]:每个下标对应的数都是唯一的 } int[] result = new int[k]; for(int i=0; i<k; i++){ int index = (int)(Math.random() * 原数组长度值); // [注意3]:看完[注意2]再回看这条语句 result[i] = src[index]; src[index] = src[原数组长度值-1]; 原数组长度值--;// [注意2]:此时原数组长度值小于原数组的真正长度 // 也就是下一次循环时[注意3]的"原数组长度值"已经小于真实长度了 // 所以[注意3]生成的下标一直在变小,后面的下标取不到因此避免重复 } Arrays.sort(result); //易于查重 System.out.println(Arrays.toString(result)); }} 关于J2SE的纠结 Condition,ReentrantLock在多个线程操作同一资源时失去作用? JAVA入门学习 java画图程序,风扇是怎么转起来的 请教高手 jacob的包操作word一直没有能成功过,帮帮我吧 请问用什么工具能由源码生成程序的静态类图? java软件开发交流群:3381806 困惑中的彷徨 在java中我如何得到10-30之间的随机数啊 ,最好能举一例,一定给分儿 关于迭代器的一个问题 请大神说说。。。。。。。。。。。。。。。 定义匿名内部类的疑惑?
public class LotteryDrawing{
public static void main(String[] args){
// 按照你的例子 原数组长度:10, 彩票数组长度:8
// [注意1]:此时原数组长度值等于原数组的真正长度
int 原数组长度值 = 10,k = 8; int[] src = new int[原数组长度值];
for(int i=0; i<原数组长度值; i++){
src[i] = i+1; //[注意4]:每个下标对应的数都是唯一的
} int[] result = new int[k];
for(int i=0; i<k; i++){
int index = (int)(Math.random() * 原数组长度值); // [注意3]:看完[注意2]再回看这条语句
result[i] = src[index];
src[index] = src[原数组长度值-1];
原数组长度值--;// [注意2]:此时原数组长度值小于原数组的真正长度
// 也就是下一次循环时[注意3]的"原数组长度值"已经小于真实长度了
// 所以[注意3]生成的下标一直在变小,后面的下标取不到因此避免重复
}
Arrays.sort(result); //易于查重
System.out.println(Arrays.toString(result));
}
}