Random的nextInt用法

Random的nextInt用法因为想当然的认为Random类中nextInt()(注:不带参数),会产生伪随机的正整数,采用如下的方式生成0~99之间的随机数: Randomrandom=newRandom(); System.out.println(random.nextInt()%100);但是在运行的时候,发现上面的方法有时会产生负数,通过查看Random类的源代码才发现,不

大家好,又见面了,我是你们的朋友全栈君。

因为想当然的认为Random类中nextInt()(注:不带参数),会产生伪随机的正整数,采用如下的方式生成0~99之间的随机数:

	Random random = new Random();    	System.out.println(random.nextInt() % 100);

但是在运行的时候,发现上面的方法有时会产生负数,通过查看Random类的源代码才发现,不带参数的nextInt会产生所有有效的整数,所以当然会有负数产生了。

正确的解法应该是:

	Random random1 = new Random();	System.out.println(random1.nextInt(100)); //100是不包含在内的,只产生0~99之间的数。

应用:

生成乱序不重复数组

package com.cn.wuliu.utils;import java.util.Random;public class Arith {      //对给定数目的自0开始步长为1的数字序列进行不重复乱序      public static int[] getSequence(int maxnum) {          int[] sequence = new int[maxnum];          for(int i = 0; i < maxnum; i++){              sequence[i] = i;          }//         System.out.println(Arrays.toString(sequence));//		[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]          Random random = new Random();          for(int i = 0; i < maxnum; i++){              int p = random.nextInt(maxnum);              int tmp = sequence[i];              sequence[i] = sequence[p];              sequence[p] = tmp;          }          random = null;          return sequence;      } 	//对给定数目的自minnum开始步长为1到maxnum的数字序列进行不重复乱序	public static int[] getSequence(int minnum,int maxnum) {    	  int num = maxnum - minnum + 1;          int[] sequence = new int[num];          for(int i = 0; i < num; i++){              sequence[i] = i + minnum;          }//          System.out.println(Arrays.toString(sequence));          Random random = new Random();          for(int i = 0; i < num; i++){              int p = random.nextInt(num);              int tmp = sequence[i];              sequence[i] = sequence[p];              sequence[p] = tmp;          }          random = null;          return sequence;      }       public static void main(String[] agrs){    	  Arith arith = new Arith();    	  int[] i = arith.getSequence(10);    	  for(int n=0;n<i.length;n++){    		  System.out.print(i[n]);    	  }    	  System.out.println();    	  int[] j = arith.getSequence(3,8);    	  for(int n=0;n<j.length;n++){    		  System.out.print(j[n]);    	  }      }}




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162889.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 简述物联网,云计算,大数据和人工智能的相互关系_物联网应用领域

    简述物联网,云计算,大数据和人工智能的相互关系_物联网应用领域我们在《互联网进化论》一书中提出“互联网的未来功能和结构将于人类大脑高度相似,也将具备互联网虚拟感觉,虚拟运动,虚拟中枢,虚拟记忆神经系统”,并绘制了一幅互联网虚拟大脑结构图。根据这一观点,我们尝试分析目前互联网最流行的四个概念————-大数据,云计算,物联网和移动互联网与传统互联网之间的关系。从这幅图中我们可以看出:物联网对应了互联网的感觉和运动神…

    2022年9月27日
    4
  • 盘点值得互联网创业者学习的十大做事风格

    盘点值得互联网创业者学习的十大做事风格中国互联网通过第19次互联网报告得出很多数据,综合成一句话就是:“发展速度惊人。”面对如此庞大的市场,国外网络巨头虎视眈眈,总想找机会跨进国门,却因为不了解中国互联网运营规范及网民的习惯,或是犹豫不决或是屡遭搁浅。  而与此同时,国内众多网站正在疯狂抢夺这块蛋糕。在这些网站的背后出谋划策的人都是大众较熟悉的,他们的思路以及做事风格,值得现在的互联网创业者学习、借荐,有相似者可对号入座。

    2022年8月20日
    10
  • maven本地仓库配置了不起作用_仓库数量出错的原因

    maven本地仓库配置了不起作用_仓库数量出错的原因在配置前请先看看这个链接里的东西https://blog.csdn.net/qq_35109803/article/details/80025853如果还是有错误的话就往下文看吧。如果你在配置maven本地仓库输入mvnhelp:system 运行出错的话,不妨试试以下方法。该方法仅对输入mvn-v可以成功运行,而输入mvnhelp:system出现Error的解决方…

    2025年12月2日
    4
  • sfdwfwefw

    sfdwfwefw

    2021年12月17日
    36
  • linux pycharm激活码[免费获取][通俗易懂]

    (linux pycharm激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月21日
    243
  • PyCharm几个常用的快捷键「建议收藏」

    PyCharm几个常用的快捷键「建议收藏」咪哥杂谈本篇阅读时间约为3分钟。1前言PyCharm作为一款Python语言的代码编辑器,在市场上广为人知。尤其是一些工程性项目来说,PyCharm非常友好。实际上,如果你要是了…

    2022年8月29日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号