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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • cocoapods使用_软线连接

    cocoapods使用_软线连接背景

    2022年9月27日
    1
  • 渗透测试工具——漏洞扫描工具

    渗透测试工具——漏洞扫描工具安全漏洞产生的原因技术原因软件系统复杂性提高,质量难于控制,安全性降低 公用模块的使用引发了安全问题经济原因“柠檬市场”效应——安全功能是最容易删减的部分环境原因从传统的封闭、静态和可控变为开放、动态和难控 攻易守难安全缺陷安全性缺陷是信息系统或产品自身“与生俱来”的特征,是其“固有成分”安全漏洞是与生俱来的系统设计缺陷Internet从设计时就缺乏安全的总体架构和设计 TCP/IP中的三阶段握手.软件源代码的急剧膨胀Windows951500万行

    2022年9月13日
    5
  • SecureCRTPortable.exe 如何上传文件「建议收藏」

    SecureCRTPortable.exe 如何上传文件「建议收藏」如果未安装在命令行输入:yuminstalllrzszrz然后上传自己的文件。在解压转载于:https://www.cnblogs.com/hgj123/p/4561754.html

    2022年6月9日
    33
  • RPC协议了解

    RPC协议了解1.RPC概述RPC(RemoteProcedureCallProtocol)远程过程调用协议。通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个过程或函数,就像调用本地应用程序中的一样。正确的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。2.RPC特点:2.1)RPC是协议:协议意味着规范。目前典型的RPC实现包括Dubbo、Thrift、Herrty等。但这些实现往往都会附加其他重要功能,例如Dubbo还包括服务管理、访问权限

    2022年5月19日
    62
  • hdu 4964 Emmet()模拟

    hdu 4964 Emmet()模拟

    2022年1月12日
    44
  • fprintf函数的作用_c语言fopen函数的用法

    fprintf函数的作用_c语言fopen函数的用法fprintf(简介)fprintf是C/C++中的一个格式化库函数,位于头文件中,其作用是格式化输出到一个流文件中;函数原型为intfprintf(FILE*stream,constchar*format,[argument]…),fprintf()函数根据指定的格式(format),向输出流(stream)写入数据(argument)。以“分别用十进制,八进制,十六进制输…

    2022年10月19日
    3

发表回复

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

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