写一彩票程序,要求能随机产生并按照升序输出1-30之间的7个数,且其中任意两个数字不能重复,Java程序

写一彩票程序,要求能随机产生并按照升序输出1-30之间的7个数,且其中任意两个数字不能重复,Java程序,第1张

import java.util.Arrays

import java.util.Random

public class random {  

 public static void main(String[] args) { 

  int[] numArray = new int[30]

  //生成一个存放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.Arrays

public 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

多试几次会有不同结果


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11477465.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存