Java实现生成n个不重复的随机数

本文实例为大家分享了Java实现生成n个不重复的随机数的具体代码,供大家参考,具体内容如下

需求:

根据min和max,生成n个不重复的随机数。(注:范围[min,max],n <= (max - min +1))

思路:

0)、把从min到max的可能出现的数字全部放进一个候选List;
1)、随机生成索引index(0 <= index <= (list.size()-1));
2)、根据index从List中取出一个数,list.get(index),并移除这个元素;

代码如下:

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class MyRandom {

 /**
  * 根据min和max随机生成一个范围在[min,max]的随机数,包括min和max
  * @param min
  * @param max
  * @return int
  */
 public int getRandom(int min, int max){
  Random random = new Random();
  return random.nextInt( max - min + 1 ) + min;
 }

 /**
  * 根据min和max随机生成count个不重复的随机数组
  * @param min
  * @param max
  * @param count
  * @return int[]
  */
 public int[] getRandoms(int min, int max, int count){
  int[] randoms = new int[count];
  List<Integer> listRandom = new ArrayList<Integer>();

  if( count > ( max - min + 1 )){
   return null;
  }
  // 将所有的可能出现的数字放进候选list
  for(int i = min; i <= max; i++){
   listRandom.add(i);
  }
  // 从候选list中取出放入数组,已经被选中的就从这个list中移除
  for(int i = 0; i < count; i++){
   int index = getRandom(0, listRandom.size()-1);
   randoms[i] = listRandom.get(index);
   listRandom.remove(index);
  }

  return randoms;
 }
}

小编再为大家分享一段:java产生10个不同随机数的代码:

package exercise03_jdknews;

import java.util.Random;
import java.util.Vector;

/**
 * 获取10个1-20之间的随机数,要求不能重复
 *
 * @author lgt
 *
 */
public class RandomNumberNoRepeat {
 public static void main(String[] args) {
  //创建一个产生随机数的对象
  Random r = new Random();

  //创建一个存储随机数的集合
  Vector<Integer> v = new Vector<Integer>();

  //定义一个统计变量
  int count = 0;

  while(count < 10){
   int number = r.nextInt(20) + 1;

   //判断number是否在集合中存在
   if(!v.contains(number)){
    //不在集合中,就添加
    v.add(number);
    count++;
   }
  }

  //遍历输出
  for(int i : v){
   System.out.println(i);
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java生成字母数字组合的随机数示例 java生成随机数

    复制代码 代码如下: package com.test; import java.util.Random; public class GenerateRandomNumber { public static void main(String[] args) { System.out.println("生成的10为随机数为:" + getCharAndNumr(10)); } /**  * java生成随机数字和字母组合  * @param length[生成随机数的长度]  * @re

  • 浅谈Java中的n种随机数产生办法

    我们从书本上学到什么? 最明显的,也是直观的方式,在Java中生成随机数只要简单的调用: java.lang.Math.random() 在所有其他语言中,生成随机数就像是使用Math工具类,如abs, pow, floor, sqrt和其他数学函数.大多数人通过书籍.教程和课程来了解这个类.一个简单的例子:从0.0到1.0之间可以生成一个双精度浮点数.那么通过上面的信息,开发人员要产生0.0和10.0之间的双精度浮点数会这样来写: Math.random() * 10 而产生0和10之间的整数

  • Java生成随机数的2种示例方法代码

    我们现在做个例子,比如生成20个0到10之间的随机数. 1.使用Random类的nextInt(n)方法,n代表0到n之间,包括0,不包括n 复制代码 代码如下: Random random = new Random();for(int i=0;i<20;i++){ System.out.println(random.nextInt(10));} 2.使用Math类中的random方法,它生成的随机数是0.0到1.0之间的double.要生成int就需要类型转换 复制代码 代码如下: for(i

  • Java实现按权重随机数

    一.问题定义: 问下有一个数组,这些数组中的值都有自己的权重,怎样设计才能高效的优先取出权重高的数?? 例如: 复制代码 代码如下: 权重: 8  2  11  79 权重返回的值: 0  1  2   3 二.分析问题: 思路一:创建一个数组数组大小为权重和的大小,如值0的权重是8,则放入8个0值,值1的权重是2,则放入2个1值,依次类推. 然后用用一个权重和大小的随机数,产生随机数,即可.缺点要占用过多的内存. 思路二: 权重和数组 w[i]存储的是[0,i]元素的所有元素的权重和  时间复

  • java实现随机数生成器

    本文实例为大家分享了java实现随机数生成器的具体代码,供大家参考,具体内容如下 自己编的随机数生成器,比较简陋,功能也单一,当作练手. Application.java package src; public class Application { public static void main(String[] args) { WindowBoxLayout win=new WindowBoxLayout(); win.setBounds(100,200,300,350); win.setT

  • 史上最全的java随机数生成算法分享

    复制代码 代码如下: String password = RandomUtil.generateString(10); 源码如下: 复制代码 代码如下: package com.javaniu.core.util;import java.util.Random;public class RandomUtil { public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS

  • java生成指定范围随机数的多种代码

    生成指定范围内的随机数这个是最常用的技术之一,程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例. 问题往往类似于: 如何随机生成 1~100 之间的随机数,取值包含边界值 1 和 100. 或者是: 如何随机生成随机的3位整数? 等等-- 以 Java 语言为例,我们观察其 Random 对象的 nextInt(int) 方法,发现这个方法将生成 0 ~ 参数之间随机取值的整数.例如(假设先有 Random rand = newRando

  • Java如何获取一个随机数 Java猜数字小游戏

    本文实例为大家分享了Java获取一个随机数(及猜数字小游戏)的具体代码,供大家参考,具体内容如下 Math类概述: 该类Math包含用于执行基本数值运算的方法,例如基本指数,对数,平方根和三角函数. Math所有类都是静态的.可以直接类名.调用. 获取随机数的办法: 代码如下 public class SuiJi { public static void main(String[] args) { double d = Math.random(); System.out.println(d);

  • 如何用java生成指定范围的随机数

    要生成在[min,max]之间的随机整数, package edu.sjtu.erplab.io; import java.util.Random; public class RandomTest { public static void main(String[] args) { int max=20; int min=10; Random random = new Random(); int s = random.nextInt(max)%(max-min+1) + min; System.

  • Java常用工具类 Random随机数、MD5加密工具类

    本文实例为大家分享了java常用工具类的具体代码,供大家参考,具体内容如下 Random随机数工具类 package com.jarvis.base.util; import java.util.Random; /** * * * @Title: RandomHelper.java * @Package com.jarvis.base.util * @Description: 随机数工具类 * @version V1.0 */ public class RandomHelper { /** *

随机推荐