精华内容
下载资源
问答
  • java生成指定范围随机数

    万次阅读 多人点赞 2017-06-20 10:00:31
    java生成指定范围随机数

    生成指定范围内的随机数

    这个是最常用的技术之一。程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例。问题往往类似于:

    如何随机生成 1~100 之间的随机数,取值包含边界值 1 和 100。

    或者是:

    如何随机生成随机的3位整数?

    等等……

    以 Java 语言为例,我们观察其 Random 对象的 nextInt(int) 方法,发现这个方法将生成 0 ~ 参数之间随机取值的整数。例如(假设先有 Random rand = newRandom();,下同):

    rand.nextInt(100);

    这行代码将生成范围0~100 之间的随机数,有趣的是,取值可能为 0 ,但不可能为 100。我们用中学数学课学习的区间表示法,表示为:[0, 100)。

    那么如果要获得区间 [1~100]的随机数,该怎么办呢?稍微动动脑筋就可以想到:区间 [0, 100) 内的整数,实际上就是区间 [0, 99]。因为最大边界为100,可惜不能等于100,因此最大可能产生的“整数”就是99。

    既然rand.nextInt(100) 获得的值是区间 [0, 99],那么在这个区间左右各加 1,就得到了区间 [1, 100]。因此,代码写成:

    rand.nextInt(100)+ 1;

    即可。运行下面的代码,将获得 [1, 100] 的 10 个取值。

    import java.util.Random;
    public class Test {
    	public static void main(String[] args){
    	  Random rand = new Random();
    	  for(int i=0; i<10; i++) {
    	   System.out.println(rand.nextInt(100) + 1);
    	  }
    	}
    }
    

    同理,很容易知道如果要获得随机两位整数,代码写成:rand.nextInt(90) + 10;

    你一定很惊讶,为什么是这么写出来的。其实,在 nextInt() 方法中作为参数的数字 90 表示:你希望生成的随机数的所有取值的可能性的数量(在本命题中,两位整数取值为 [10, 99],共90个数);加好后面的数字 10 ,表示区间的最小取值。

    你可以验证下,按照这样理解,[1, 100] 的随机数,是不是应该写成rand.nextInt(100) + 1 。千万不要把参数 100 理解为最大取值。只是区间 [1, 100] 正好从 1 开始,所以最大取值和取值可能性数量正好同为 100。

    因此,

    生成随机三位数的代码为:

    rand.nextInt(900)+ 100;

    生成区间 [64,128] 中随机值的代码为:

    rand.nextInt(65)+ 64;

    取值可能性的数量是如何计算出来的呢?当然是 最大取值-最小取值+1 ,所以,有最终公式如下

    // For Java

    int randNumber =rand.nextInt(MAX - MIN + 1) + MIN; // randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数


    原贴: Java中在特定区间产生随机数
    展开全文
  • java生成特定范围随机数: https://blog.csdn.net/u012049667/article/details/12774733
    展开全文
  • 生成[10,20]随机数为例,首先生成0-20的随机数,然后对(20-10+1)取模得到[0-10]之间的随机数,然后加上min=10,最后生成的是10-20的随机数
  • 【三种方法】Java生成指定范围随机数

    Java中产生随机数的方法主要有三种:

    1. new Random()
    2. Math.random()
    3. currentTimeMillis()

    1. Random类

    第一种需要借助java.util.Random类来产生一个随机数发生器,也是最常用的一种,构造函数有两个,Random()Random(long seed)

    • 第一个就是以当前时间为默认种子
    • 第二个是以指定的种子值进行。

    种子就是产生随机数的第一次使用值,随机是通过一个函数,将这个种子的值转化为随机数空间中的某一个点上,并且产生的随机数均匀的散布在空间中。以后产生的随机数都与前一个随机数有关。

    public static void main(String[] args) {
        Random rand = new Random();
        for (int i = 0; i < 10; i++) {
            System.out.println(rand.nextInt(100) + 1);
        }
    }
    

    获得指定位随机数

    随机两位整数

    rand.nextInt(90) + 10; 
    

    生成随机三位数的代码为:

    rand.nextInt(900) + 100;
    

    获取指定范围随机数

    生成区间 [64,128] 中随机值的代码为:

    rand.nextInt(65)+ 64;
    

    最终公式如下:

    int randNumber = rand.nextInt(MAX - MIN + 1) + MIN;
    

    randNumber 属于[MIN, MAX]

    public void test1() {
        Random rand = new Random();
        int MAX = 100, MIN = 1;
        for (int i = 0; i < 10; i++) {
            System.out.print(rand.nextInt(MAX - MIN + 1) + MIN + " ");
        }
    }
    //62 100 76 96 80 66 67 10 55 16 
    

    2. Math.random()

    而第二种方法返回的数值是[0.0, 1.0)的double型数值,由于double类数的精度很高,可以在一定程度下看做随机数,借助(int)来进行类型转换就可以得到整数随机数了\

    在这里我举个例子:生成一个[1,100]之间的随机数字。

    num = (int)(Math.random()*100) + 1;
    

    Math.random()生成的是一个[0.0,1.0)之间的小数0.xxxxxx… 先将小数点向后移动2位,然后强制转换成int型,只保留整数位的值,这时候值的范围是[0,99],两个边界同时扩大一个单位的值+1,范围就变成了[1,100]。

    @Test
    public void test2() {
        for (int i = 0; i < 10; i++) {
            int ran = (int) (Math.random() * 100 + 1);
            System.out.print(ran + " ");
        }
    }
    //25 68 30 33 35 65 32 78 27 85 
    

    但是…

    我现在改变要求我需要一个范围为[0,100]的随机数,用简单的话来说就是包括0包括100

    这时候就会发现使用第一种方法很难凑成既包括0又包括100的范围。这种情况推荐使用第一种方法

    3. 时间戳

    这种方法在循环中连续产生随机数,由于是同一时间,产生的结果可能相同

    至于第三种方法虽然不常用,但是也是一种思路。方法返回从1970年1月1日0时0分0秒(这与UNIX系统有关)到现在的一个long型的毫秒数,取模之后即可得到所需范围内的随机数。

    @Test
    public void test3() {
        int max = 100, min = 1;
        long randomNum = System.currentTimeMillis();
        int ran = (int) (randomNum % (max - min) + min);
        //循环同一时间会产生相同的数
        System.out.print(ran);
    }
    
    展开全文
  • Java生成指定范围随机数

    万次阅读 多人点赞 2019-06-12 16:04:29
    生成指定范围内的随机数是最常用的技术之。程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例。问题往往类似于: 如何随机生成 1~100 之间的...

    生成指定范围内的随机数

    这个是最常用的技术之一。程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例。问题往往类似于:

    如何随机生成 1~100 之间的随机数,取值包含边界值 1 和 100。

    或者是:

    如何随机生成随机的3位整数?

    等等……

    以 Java 语言为例,我们观察其 Random 对象的 nextInt(int) 方法,发现这个方法将生成 0 ~ 参数之间随机取值的整数。例如(假设先有 Random rand = newRandom();,下同):

    rand.nextInt(100);

    这行代码将生成范围0~100 之间的随机数,有趣的是,取值可能为 0 ,但不可能为 100。我们用中学数学课学习的区间表示法,表示为:[0, 100)。

    那么如果要获得区间 [1~100]的随机数,该怎么办呢?稍微动动脑筋就可以想到:区间 [0, 100) 内的整数,实际上就是区间 [0, 99]。因为最大边界为100,可惜不能等于100,因此最大可能产生的“整数”就是99。

    既然rand.nextInt(100) 获得的值是区间 [0, 99],那么在这个区间左右各加 1,就得到了区间 [1, 100]。因此,代码写成:

    rand.nextInt(100)+ 1;

    即可。运行下面的代码,将获得 [1, 100] 的 10 个取值。

    import java.util.Random;
     
    public class Test {
     
    public static void main(String[] args){
     
    Random rand = new Random();
     
    for(int i=0; i<10; i++) {
     
    System.out.println(rand.nextInt(100) + 1);
     
    }
    

    同理,很容易知道如果要获得随机两位整数,代码写成:rand.nextInt(90) + 10;

    你一定很惊讶,为什么是这么写出来的。其实,在 nextInt() 方法中作为参数的数字 90 表示:你希望生成的随机数的所有取值的可能性的数量(在本命题中,两位整数取值为 [10, 99],共90个数);加好后面的数字 10 ,表示区间的最小取值。

    你可以验证下,按照这样理解,[1, 100] 的随机数,是不是应该写成rand.nextInt(100) + 1 。千万不要把参数 100 理解为最大取值。只是区间 [1, 100] 正好从 1 开始,所以最大取值和取值可能性数量正好同为 100。

    因此,

    生成随机三位数的代码为:

    rand.nextInt(900)+ 100;

    生成区间 [64,128] 中随机值的代码为:

    rand.nextInt(65)+ 64;

    取值可能性的数量是如何计算出来的呢?当然是 最大取值-最小取值+1 ,所以有最终公式如下:

    ★★★★★

    int randNumber =rand.nextInt(MAX - MIN + 1) + MIN; // randNumber 将被赋值为一个 MIN 和 MAX 范围内的随机数

     

    展开全文
  • java生成指定范围随机数(太屌了)

    万次阅读 多人点赞 2018-11-29 23:39:04
    生成指定范围内的随机数是最常用的技术之。程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例。问题往往类似于: 如何随机生成 1~100 之间的...
  • Java的Math类中,有一个random的方法可以用来生成随机数,这也是最简单的用来生成随机数的方法。 random方法讲解 random方法本身会生成0~1之间的随机数,注意,这些随机数都是double类型的,并且是大于等于0,小于1...
  • 今天在写代码的时候需要用到一个生成指定范围随机数的函数,百度了一下,发现了很多种方法,这里简单为大家整理一下,方便需要的朋友
  •  生成微信账号 8位的字符串 含有数字和字母  */  public String getRandomWeiChat(){  String str = "a0A0b1B2c1C3d2D1e3E2f4F3g5G7h4H6i5Ij4J9k5K6l6Lm7M7n8N8o9Op0PqQrRsStTuUv9VwWxXy8YzZ";  r
  • I am trying with below code to generate 10 digits unique random number. As per my req i have to create around 5000 unique numbers(ids). This is not working as expected. It also generates -ve numbers....
  • 生成指定范围随机数生成在[min,max]之间的随机整数,/** * 得到0到9的随机数 * @return */ public int getRangeDate(){ int max=9; int min=0; Random random = new Random(); return random.nextInt...
  • 这个是最常用的技术之一。程序员希望通过随机数的方式来处理众多的业务...1.使用Math类的random方法,这个方法返回的是一个0~1之间的double类型的小数 public class Demo1 { public static void main(String[] args) {
  • Java生成一个随机数

    2017-06-25 22:50:41
    生成0-149的整型随机数Random ... //int范围类的随机数(0-149)生成50-149的整型随机数Random rand = new Random(); int i = rand.nextInt(99); //int范围类的随机数(0-99) i += 50; //(0-99)的数加上50,即可达
  • 需要模拟随机数范围是(0.025--0.06) 先要生成在[min,max]之间的随机整数,随机小数可乘相应倍数。 故先生成25--60之间的整数,再乘以0.001便得到结果。 /* * 目标:输出0.025-0.6之间的随机数 * @author ...
  • In this tutorial I will teach you how to generate random ... 在本教程中,我将教您如何在Java范围生成随机数。 There are two ways by which Java random number can be generated. The first way is to us...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,815
精华内容 30,726
关键字:

java生成一个范围的随机数

java 订阅