import java.util.Random
public class random {
public static void main(String[] args) {
int[] numArray = new int[30]
for(int i=0i<numArray.lengthi++){
numArray[i]=i+1
}
Random random = new Random()
int randomNum = numArray.length-1
int[] array=new int[7]
for(int i=0i<array.lengthi++){
int index = random.nextInt(randomNum--)
array[i]= numArray[index]
int temp=numArray[index]
numArray[index]=numArray[randomNum]
numArray[randomNum]=temp
}
Arrays.sort(array)
for(int i=0i<array.lengthi++){
System.out.print(array[i]+" ")
}
}
说下大致思路,就是先弄一个1-30的数组,然后随机去数组里面取数,取完一次以后把本次取的数据往数组尾部放,并把尾部没选过的数字放到中间来,然后缩小检索数组的范围(这样就不会选到选过的数字了)
按照你的要求编写的35选7彩票生成器的Java程序如下
import java.util.Arrayspublic class F {
public static String random() {
int []a=new int[7]
int count=0
while(count<7){
boolean flag=false
int tmp=(int)(Math.random()*35)+1
for(int i=0i<a.lengthi++){
if(tmp==a[i]){
flag=true
}
}
if(flag==false){
a[count]=tmp
count++
}
}
//对选出的7个数排序
Arrays.sort(a)
//输出35选7的结果 并在个位数前补0
String s=""
for(int i=0i<a.lengthi++){
if(i==a.length-1){
if(a[i]<10){
s=s+"0"+a[i]
}else{
s=s+a[i]
}
}else{
if(a[i]<10){
s=s+"0"+a[i]+","
}else{
s=s+a[i]+","
}
}
}
return s
}
public static void main(String[] args) {
System.out.println(random())
}
}
运行结果
05,10,14,16,22,28,31
多试几次会有不同结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)