java.lang.Random误区


最近在开发中需要随机生成指定位数的随机数,想起来random类有一个误区,再次写出来让大家在开发中避免犯类似的错误。

在java中对于Random类想必大家都知道是用来产生随机数的,但是稍有不慎就可能出现错误。

例如:

public static void main(String[] args) {
        Random random = new Random();

        System.err.println(random.nextInt(10));

        System.err.println(random.nextInt(10));

        System.err.println(random.nextInt(10));

        System.err.println(random.nextInt(10));

        System.err.println(random.nextInt(10));
        
    }

这段代码用来生成5个10以内的随机数,运行可以发现每次的值都不同。

跟下边这段代码比较:

public static void main(String[] args) {
        Random random = new Random(10);

        System.err.println(random.nextInt(10));

        System.err.println(random.nextInt(10));

        System.err.println(random.nextInt(10));

        System.err.println(random.nextInt(10));

        System.err.println(random.nextInt(10));
        
    }

通过多次运行你可以发现每次的结果都是一样的,在我电脑上每次的结果都是

3
0
3
0
6

通过比较两端代码可以发现唯一不一样的地方就是在创建random时是否指定了种子。没有指定种子的random每次都是随机的,而指定种子以后变成了固定值。

所以建议在需要随机生成随机数字时,不要指定种子。

时间: 2024-10-29 07:56:42

java.lang.Random误区的相关文章

Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity

1.错误描写叙述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop } 2014-7-12 19:41:17 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.29 usi

Java总结篇系列:java.lang.Object

从本篇开始,将对Java中各知识点进行一次具体总结,以便对以往的Java知识进行一次回顾,同时在总结的过程中加深对Java的理解. Java作为一个庞大的知识体系,涉及到的知识点繁多,本文将从Java中最基本的类java.lang.Object开始谈起. Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起.作为其他所有类的基类,Object具有哪些属性和行为, 是Java语言设计背后的思维体现. Object类位于java.lang包中,java.lang包包

Java 异常处理的误区和经验总结--转载

本文着重介绍了 Java 异常选择和使用中的一些误区,希望各位读者能够熟练掌握异常处理的一些注意点和原则,注意总结和归纳.只有处理好了异常,才能提升开发人员的基本素养,提高系统的健壮性,提升用户体验,提高产品的价值. 误区一.异常的选择 图 1. 异常分类 图 1 描述了异常的结构,其实我们都知道异常分检测异常和非检测异常,但是在实际中又混淆了这两种异常的应用.由于非检测异常使用方便,很多开发人员就认为检测异常没什么用处.其实异常的应用情景可以概括为以下: 一.调用代码不能继续执行,需要立即终止

Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWo

1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop } 2014-7-12 14:19:28 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.29 using

Java中 Random

Java中的Random()函数 (2013-01-24 21:01:04) 转载▼ 标签: java random 随机函数 杂谈 分类: Java 今天在做Java练习的时候注意到了Java里面的一个随机函数——Random,刚开始只是知道这个函数具有随机取值的作用,于是上网搜索了资料一番,做了一下一些关于Random函数的总结: Java中存在着两种Random函数: 一.java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该

深入研究java.lang.ThreadLocal类

深入研究java.lang.ThreadLocal类 一.概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量).也许把它命名为ThreadLocalVar更加合适.线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副

Caused by: java.lang.NoClassDefFoundError: freemarker/cache/TemplateLoader

1.错误描写叙述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop } 2014-7-10 23:28:16 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.29 usi

Caused by: java.lang.ClassNotFoundException: ognl.PropertyAccessor

1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop } 2014-7-10 23:00:04 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.29 using

Caused by: java.lang.ClassNotFoundException: javassist.ClassPool

1.错误原因 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop } 2014-7-10 23:07:25 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.29 using