package test2;

import java.util.Random;

/**
* @author cy
*
* @date 2015年7月28日 上午8:47:52
*
* @Description TODO
*/ public class Enums {
private static Random rand = new Random() ; // 为什么一直是47
public static <T extends Enum<T>> T random(Class<T> ec ){
return random(ec.getEnumConstants()) ;
}
public static <T> T random(T[] values ){
int x = rand.nextInt(values.length) ;
System.out.println("x: " + x);
return values[x] ;
}
public static void main(String[] args) {
for( int i = 0 ; i < 10 ; i ++){
System.out.println(rand.nextInt(3));
}
System.out.println("=============");
for( int i = 0 ; i < 11 ; i ++){
System.out.println(rand.nextInt(3));
}
}
}

上面的这个程序的输出序列不会发生变化。

下面的这个程序输出也不会发生变化。但是我本来是想达到每次运行都不同,达到随机的效果。

package test2;

/**
* @author cy
*
* @date 2015年7月28日 上午9:34:32
*
* @Description TODO
*/
public enum SecurityCategory {
STOCK(Security.Stock.class), BOND(Security.Bond.class);
public Security[] values; private SecurityCategory(Class<? extends Security> security) {
values = security.getEnumConstants();
} interface Security {
enum Stock implements Security {
SHORT, LONG, MARGIN
} enum Bond implements Security {
MUNICIPAL, JUNK
}
} public Security randomSelect() {
return Enums.random(values);
} public static void main(String[] args) {
/**
* 这个程序的输出不会出现随机出现的效果,
* 原因: 一个java程序运行就会打开一个java虚拟机
* (可以观察在系统进程中会有多个javaw.exe的进程
* ,因为打开一个eclipse会有多个功能模块依靠java虚拟机运行,JVM只有一个,但有多个虚拟机实例 ),
* 当程序关闭了相应的虚拟机实例也就关闭了。在该程序中有两点需要注意,1. 带有固定种子数的Random产生的随机数是
* 一个固定序列。2. 每当运行程序时,静态的Random对象就会重新初始化,所以产出的随机序列就一直不变。
* 所以会出现这样的运行结果:
* 在Enums.java中运行main方法输出的结果一直是不变的。而且在这个程序中的输出也一直是不变的。
* 如果在Random对象中不填种子数,API中是这样写的
* “创建一个新的随机数生成器。此构造方法将随机数生成器的种子设置为某个值,该值与此构造方法的所有其他调用所用的值完全不同”
* 虽然我没有明白这是啥意思,估计是说产生独一无二的的种子数。
*
*/
for (SecurityCategory s : SecurityCategory.values()) {
/*
* for(Security c : s.values){ System.out.println(c); }
*/
System.out.println(s.randomSelect());
System.out.println("============");
} }
}

原因写在注释中了~~~~~~~~~~

关于Random类产生随机数的一些问题的更多相关文章

  1. .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数

    .Net中我们通常使用Random类生成随机数,在一些场景下,我却发现Random生成的随机数并不可靠,在下面的例子中我们通过循环随机生成10个随机数: ; i < ; i++) { Rando ...

  2. 高并发分布式系统中生成全局唯一(订单号)Id js返回上一页并刷新、返回上一页、自动刷新页面 父页面操作嵌套iframe子页面的HTML标签元素 .net判断System.Data.DataRow中是否包含某列 .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数

    高并发分布式系统中生成全局唯一(订单号)Id   1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(D ...

  3. Random类(随机数)

    前言:总是忘记怎么用.上网一查,都是些有的没的...... 最简单却最常用的方法:Random.Next方法 首先,为Random类实例化一个对象: Random n=new Random(); Ne ...

  4. 【代码笔记】Java常识性基础补充(一)——赋值运算符、逻辑运算符、三元运算符、Scanner类、键盘输入、Random类、随机数

    为什么要进行Java常识性基础补充? 之前学习Java语言,学得很多很杂,而且是很多不同的方面插入讲解的,比如在跟班上课,自学java编程例子,java语法,过了很久,因为各种原因长时间不怎么写,有时 ...

  5. Random 类生成随机数

    Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要 ...

  6. Random类产生随机数

    Random 类作为JAVA中用于产生的随机数 ,new  Random(10)  :10是种子数. 注意:Random 的一个特点是:相同种子数的Random对象,对应相同次数生成的随机数字是完全相 ...

  7. java Random类生成随机数

    封装一个方法: import java.util.Random; public class RandomUtil { /** * nextInt(num) 产生[0 ~ (num-1)]的随机数, 闭 ...

  8. Random类

    Random类是随机数产生类,可以指定一个随机数的范围,然后任意产生在此范围中的数字. //================================================= // F ...

  9. 数字(数学)操作类 Math Random 类 ,大数字操作类

    Math 提供了大量的数学操作方法 Math类中所有的方法都是static 方法

随机推荐

  1. win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件

    win7,vs2010,asp.net项目中修改外部js文件,在调试时加载的还是旧文件 我杀过 w3wp.exe和asp.net_state的进程,重启 iis admin的服务,都还是不行. 只是把 ...

  2. 从客户端(CourseIssueContent="<P>财务审计师岗位认证招生简章<BR>...")中检测到有潜在危险的 Request.Form 值。

    说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止.该值可能指示危及应用程序安全的尝试,如跨站点的脚本攻击.通过在 Page 指令或 配置节中设置 validateRequest ...

  3. Android Studio 引入Lambda表达式

    依次点击 [File][Other Settings][Default Project Structure]确保当前项目使用的JDK版本是1.8. 打开项目(Project)的build.gradle ...

  4. MACD 基本用法

    基本用法 1. MACD 金叉:DIFF 由下向上突破 DEA,为买入信号. 2. MACD 死叉:DIFF 由上向下突破 DEA,为卖出信号. 3. MACD 绿转红:MACD 值由负变正,市场由空 ...

  5. 网站迁移时候,发现<head>内容都到body里了

    遇到的问题截图如下: 这个是编码问题,需要把所有涉及的文件保存成UTF-8 without BOM,手动的话可以用notepad++ 如果网站支持php,这边提供了一个php的脚本(clearBom. ...

  6. CSS-布局【1】-图片在div中垂直居中

    方法一:通过增加100%高度行内块居中对齐 <!DOCTYPE html> <html> <head> <meta name="viewport&q ...

  7. Codeforces 467C George and Job(DP)

    题目 Source http://codeforces.com/contest/467/problem/C Description The new ITone 6 has been released ...

  8. java基础内容

    此文作java语法基础的起始页,负责总结和目录引导 想我开始接触java语法也有比较长时间了(大概是2015年十月份),到现在(2016-10-25)为止还未系统的学习总结基础语法,亡羊补牢吧,回过头 ...

  9. iOS学习30之UITableView编辑

    1. UITableView编辑 1> UITableView 编辑流程 2> UITableView 编辑步骤(四步) ① 第一步 : 让 TableView 处于编辑状态(在按钮点击事 ...

  10. iOS学习28之UITabBarController

    1. 标签视图控制器 -- UITabBarController 视图(UIView) ---> 图层 ---> 子视图 视图控制器(UIViewController) ---> 管 ...