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]);    	  }      }}




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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mongodb官网下载不了, MongoDB下载、安装、配置、使用,如何下载MongoDB数据库,MongoDB入门[通俗易懂]

    什么是MongoDB?MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB可在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB可为Web应用提供可扩展的高性能数据存储解决方案。MongoDB将数据存储在灵活的json文档中,这意味着可以直接得到从文档到文档的数据、结构等。MongoDB是免费使用的。Mon…

  • c#操作数据库(winform如何修改数据库设置)

    鉴于很多童鞋们对数据库操作不是很熟悉,这里对数据库操作的相关知识做个介绍。首先介绍ADO.NET中的几个常用的对象,介绍的很简单。1.SqlConnection 这是数据库连接对象,通过对其进行实例化来创建针对数据库的连接,其参数为数据库连接字符串。如下:S

  • [RoCE]Flow Control

    [RoCE]Flow Control概览RoCE可以实现lossless无损网络环境,在二层网络上做到可靠网络传输,从而对原本在光纤网络环境下的应用在以太网环境下提供相同的服务,而不必对应用逻辑和上层协议更改。实现无损的方法有GlobalPause,PFC,DroplessReceiveQueue。1.什么是802.3xFlowControl(GlobalPause)?以太网标准(802.3)设计时是不可…

  • dfa算法c语言,用c语言采用模拟dfa算法编写一个扫描器.docx

    用C语言米用模拟DFA算法编写一个扫描器/*第一章:相关知识DFA定义:一个确定的有穷自动机(DFA)M是一个五元组:M=(K,厶f,S,Z)其中0K是一个有穷集,它的每个元素称为一个状态;工是一个有穷字母表,它的每个元素称为一个输入符号,所以也称工为输入符号字母表;f是转换函数,是KX》tK的映射,即,如f(ki,a)=kj,(ki€K,kj€K)就意味着,当前状态…

  • mysql查询去除重复记录[通俗易懂]

    mysql查询去除重复记录[通俗易懂]mysql查询去除重复记录1:使用distinctselectdistinctnamefromawherestatesign=0查询表a中的name字段,去除重复记录2:使用groupbyselectnamefromawherestatesign=0groupbyname查询表a中的name字段,分组,去除重复记录…

  • ip地址分类和子网掩码「建议收藏」

    ip地址分类和子网掩码「建议收藏」ip地址分类和子网掩码1.ip地址分类A类网络的IP地址范围为1.0.0.1-127.255.255.254;第一个八位是网络地址后三个八位是主机地址。B类网络的IP地址范围为:128.1.0.1-191.255.255.254;第二个八位是网络地址,剩下的三个是主机地址。C类网络的IP地址范围为:192.0.1.1-223.255.255.254;第三个八位是网络地址,剩下的三个是…

发表回复

您的电子邮箱地址不会被公开。

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