写一彩票程序,要求能随机产生并按照升序输出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的数组,弯弊燃然后随机埋虚去数组里面取数,取完一次以后把本次取的数据往数组尾部放,并把尾部没选过的数字放到中间来,然后缩小检索数组的范围(这样就不会选到选过的数字了)

就是孙谈从判指36个数中选出7个,这36个数是什么可以自己指定,但必须保证不重复,我写的一个代码则冲碰

public

class

test

{

public

static

void

main(String[]

args)

{

int[]

a

=

new

int[36]

for(int

i

=

0

i

<

36

++i)

a[i]

=

i+1

for(int

i

=

0

i

<

5

++i)

randomSelect(a,

7)

}

static

void

randomSelect(int[]

a,

int

n)

{

randomShuffle(a,

7)

for(int

i

=

0

i

<

n

++i)

System.out.print(a[i]

+

"

")

System.out.println()

}

static

void

randomShuffle(int[]

a,

int

n)

{

for(int

i

=

0

i

<

n

++i)

{

int

r

=

(int)(Math.random()

*

a.length)

int

tmp

=

a[i]

a[i]

=

a[r]

a[r]

=

tmp

}

}

}


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

原文地址: https://outofmemory.cn/yw/12485904.html

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

发表评论

登录后才能评论

评论列表(0条)

保存