JAVA随机生成几个某区间无重复的数字,顺便把ssq的函数写出来

本文介绍了一个使用Java实现的随机数生成器,它能够生成指定范围内的无重复随机数,并提供了一个模仿双色球彩票的示例。该程序利用了ArrayList的remove()和add()方法来确保随机数的唯一性。

 

 

import java.io.*;
import java.util.ArrayList;
import java.util.Random;

public class RandomNoRepeat
{
 
 public int inputNum = 0;
 
 private ArrayList getNum = null;
 
 public int inputNum() throws IOException
 {
  String inputStr = null;
  int    Num      = 0;

  BufferedReader istream = new BufferedReader(new   InputStreamReader(System.in));

  inputStr = istream.readLine();
  Num = Integer.valueOf(inputStr);
  return Num;
 }
 
 public ArrayList genarateNum(int Num)
 {
  ArrayList storeNum = new ArrayList();
  for(int i = 1; i <= Num; i++ )
  {
   storeNum.add(i);
  }
  return storeNum;
 }
 
 private void processData() throws IOException
 {
  int outNum = 0;  
  System.out.print("请输入您数字的区间的最大值:");
  inputNum = inputNum();
  getNum   = genarateNum( inputNum );
  for(int i = 1; i <= inputNum; i++)
  {
   outNum = Integer.valueOf( getNum.get(i-1).toString() );
   //System.out.println(outNum);
  }


  System.out.print("请您输入需要随机数字的个数:");
  int range = inputNum();
  for (int j = 0; j < range; j++) 
  {
   int randRange = inputNum - j;
   Random ran = new Random(System.currentTimeMillis());
   int randNum = ran.nextInt(randRange);
   outNum = Integer.valueOf( getNum.get(randNum).toString() );
   getNum.remove(randNum);
   System.out.println(outNum);
  }
    
 }
 
 public void ssq()
 {
     int outNum = 0;
     ArrayList redNum  = null;
     ArrayList buleNum = null;  
  System.out.println("--这是一个模仿双色球的函数---");
  //inputNum = inputNum();
  redNum   = genarateNum( 33 );
  buleNum  = genarateNum( 16 );
  System.out.print("红色号码是: ");
  for (int j = 0; j < 7; j++) 
  {
   int randRange = 33 - j;
   Random randomRed = new Random(System.currentTimeMillis());
   int randRedNum = randomRed.nextInt(randRange);
   outNum = Integer.valueOf( redNum.get(randRedNum).toString() );
   redNum.remove(randRedNum);
   System.out.print(outNum+ " ");
  }
  
      Random randomBlue = new Random(System.currentTimeMillis());
   int randBlueNum = randomBlue.nextInt(16);
   outNum = Integer.valueOf( buleNum.get(randBlueNum).toString() );
   System.out.println("蓝色号码是: " + outNum);
 }
 
 public static void main(String str[]) throws IOException
 {
  System.out.println("----本程序的主要目的是随机生成某区间无重复的随机数----");
  RandomNoRepeat localObj = new RandomNoRepeat();
  //localObj.processData();
  localObj.ssq();
  }
}

 

 

 

主要是在运用arrayList的remove()和add()方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值