`
xiaocao000
  • 浏览: 224060 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

SimpleRandom.java

阅读更多
/*
 * SimpleRandom.java xiaocao000 2009-7-30
 */
package com.xiaocao000.lang;

import java.util.Calendar;
import java.util.Date;

/**
 * 简单随机数生成工具。
 * 
 * @author xiaocao000
 */
public class SimpleRandom
{
    private static final int BUFSIZE = 100;
    private static double[] buf = new double[BUFSIZE];
    static
    {
        for (int i = 0; i < buf.length; i++)
        {
            buf[i] = Math.random();
        }
    }

    /**
     * 获取一个随机byte值。
     * 
     * @return 随机byte值。
     */
    public static byte getByte()
    {
        return (byte) (nextRandom() * Byte.MAX_VALUE);
    }

    /**
     * 获取一个介于[min, max)之间的随机byte值。
     * 
     * @param min
     *            随机byte值的下限(包含)
     * @param max
     *            随机byte值的上限(不包含)
     * @return 介于[min, max)之间的随机byte值。
     */
    public static byte getByte(byte min, byte max)
    {
        return (byte) (nextRandom() * (max - min) + min);
    }

    /**
     * 获取一个随机short值。
     * 
     * @return 随机short值。
     */
    public static short getShort()
    {
        return (short) (nextRandom() * Short.MAX_VALUE);
    }

    /**
     * 获取一个介于[min, max)之间的随机short值。
     * 
     * @param min
     *            随机short值的下限(包含)
     * @param max
     *            随机short值的上限(不包含)
     * @return 介于[min, max)之间的随机short值。
     */
    public static short getShort(short min, short max)
    {
        return (short) (nextRandom() * (max - min) + min);
    }

    /**
     * 获取一个随机int值。
     * 
     * @return 随机int值。
     */
    public static int getInt()
    {
        return (int) (nextRandom() * Integer.MAX_VALUE);
    }

    /**
     * 获取一个介于[min, max)之间的随机int值。
     * 
     * @param min
     *            随机int值的下限(包含)
     * @param max
     *            随机int值的上限(不包含)
     * @return 介于[min, max)之间的随机int值。
     */
    public static int getInt(int min, int max)
    {
        return (int) (nextRandom() * (max - min) + min);
    }

    /**
     * 获取一个随机float值。
     * 
     * @return 随机float值。
     */
    public static float getFloat()
    {
        return (float) (nextRandom() * Float.MAX_VALUE);
    }

    /**
     * 获取一个介于[min, max)之间的随机float值。
     * 
     * @param min
     *            随机float值的下限(包含)
     * @param max
     *            随机float值的上限(不包含)
     * @return 介于[min, max)之间的随机float值。
     */
    public static float getFloat(float min, float max)
    {
        return (float) (nextRandom() * (max - min) + min);
    }

    /**
     * 获取一个随机long值。
     * 
     * @return 随机long值。
     */
    public static long getLong()
    {
        return (long) (nextRandom() * Long.MAX_VALUE);
    }

    /**
     * 获取一个介于[min, max)之间的随机long值。
     * 
     * @param min
     *            随机long值的下限(包含)
     * @param max
     *            随机long值的上限(不包含)
     * @return 介于[min, max)之间的随机long值。
     */
    public static long getLong(long min, long max)
    {
        return (long) (nextRandom() * (max - min) + min);
    }

    /**
     * 获取一个随机double值。
     * 
     * @return 随机double值。
     */
    public static double getDouble()
    {
        return (double) (nextRandom() * Double.MAX_VALUE);
    }

    /**
     * 获取一个介于[min, max)之间的随机double值。
     * 
     * @param min
     *            随机double值的下限(包含)
     * @param max
     *            随机double值的上限(不包含)
     * @return 介于[min, max)之间的随机double值。
     */
    public static double getDouble(double min, double max)
    {
        return (double) (nextRandom() * (max - min) + min);
    }

    /**
     * 获取一个随机boolean值。
     * 
     * @return 随机boolean值
     */
    public static boolean getBoolean()
    {
        return nextRandom() > 0.5;
    }

    /**
     * 获取一个随机小写字母Character[a-z]值。
     * 
     * @return 随机Character值
     */
    public static char getLowerCharacter()
    {
        return (char) (getInt(0, 26) + 'a');
    }

    /**
     * 获取一个随机大写字母Character[A-Z]值。
     * 
     * @return 随机Character值
     */
    public static char getUpperCharacter()
    {
        return (char) (getInt(0, 26) + 'A');
    }

    /**
     * 获取一个随机字母Character[A-Z|a-z]值。
     * 
     * @return 随机Character值
     */
    public static char getCharacter()
    {
        // return getBoolean() ? getLowerCharacter() : getUpperCharacter();
        return (char) (getInt(0, 26) + (getBoolean() ? 'A' : 'a'));
    }

    /**
     * 返回一个长度为8的包含大小写字母的随机字符串。
     * 
     * @return String
     */
    public static String getString()
    {
        return getString(8);
    }

    /**
     * 返回指定长度的包含大小写字母的随机字符串。
     * 
     * @return String
     */
    public static String getString(int len)
    {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < len; i++)
        {
            sb.append(getCharacter());
        }
        return sb.toString();
    }

    /**
     * 获取随机的Calendar对像,年份介于[1970,2050]。
     * @return 随机的Calendar对像
     */
    public static Calendar getCalendar()
    {
        Calendar calendar = Calendar.getInstance();
        calendar.set(getInt(1970, 2051), getInt(0, 12), getInt(1, 32), 
                getInt(0, 24), getInt(0, 60), getInt(0, 60));

        return calendar;
    }
    
    
    /**
     * 获取随机java.util.Date对象,年份介于[1970,2050]。
     * @return 随机java.util.Date对象
     */
    public static Date getDate()
    {
        return getCalendar().getTime();
    }

    /**
     * 从随机数缓冲区获取一个double随机数。
     * 
     * @return double随机数。
     */
    private static double nextRandom()
    {
        int index = (int) (Math.random() * BUFSIZE);
        // if (index == BUFSIZE)
        // {
        // index = BUFSIZE - 1;
        // }
        double result = buf[index];
        buf[index] = Math.random();
        return result;
    }

}

分享到:
评论

相关推荐

    SimpleRandom:심심해서로종류별

    SimpleRandom:심심해서로종류별

    android-simple-random-color-app:简单的Android随机色彩应用

    android-simple-random-color-app 简单的Android随机色彩应用

    智能制造的数字化工厂规划qytp.pptx

    智能制造的数字化工厂规划qytp.pptx

    罗兰贝格:德隆人力资源管理体系gltp.pptx

    罗兰贝格:德隆人力资源管理体系gltp.pptx

    JAVA3D的网络三维技术的设计与实现.zip

    JAVA3D的网络三维技术的设计与实现

    setuptools-11.3.1.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于J2EE的B2C电子商务系统开发.zip

    基于J2EE的B2C电子商务系统开发

    麦肯锡_xx保险员工培训咨询报告gltp.pptx

    麦肯锡_xx保险员工培训咨询报告gltp.pptx

    JAVA社区网络服务系统.zip

    JAVA社区网络服务系统

    备自投tp.pptx

    备自投tp.pptx

    setuptools-10.1-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于JSP的高校教务排课管理系统源码.zip

    JSP高校教务排课管理系统,管理员角色包含以下功能:课程申请管理,课程设置管理,课程情况查看,专业设置查看,排课管理,系办人员管理,教师管理,学生管理,教室管理,班级管理,管理员登录等功能。教师角色包含以下功能:教师角色登录,申请增加课程,学生管理,成绩录入管理,课程安排管理等功能。学生角色包含以下功能:学生角色登录,基本信息查看,选课功能安排,课程表查看,成绩查询等功能。 本项目实现的最终作用是基于JSP高校教务排课管理系统 分为3个角色 第1个角色为管理员角色,实现了如下功能: - 专业设置查看 - 学生管理 - 排课管理 - 教室管理 - 教师管理 - 班级管理 - 管理员登录 - 系办人员管理 - 课程情况查看 - 课程申请管理 - 课程设置管理 第2个角色为教师角色,实现了如下功能: - 学生管理 - 成绩录入管理 - 教师角色登录 - 申请增加课程 - 课程安排管理 第3个角色为学生角色,实现了如下功能: - 基本信息查看 - 学生角色登录 - 成绩查询 - 课程表查看 - 选课功能安排

    第21章spring-mvc之缓存

    第21章spring-mvc之缓存

    华为网盘高级版

    华为网盘高级版

    setuptools-18.0.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Java聊天室程序(java).zip

    Java聊天室程序(java)

    产品线经理转身赋能zzn.pptx

    产品线经理转身赋能zzn.pptx

    JAVA泡泡堂网络游戏的设计与实现.zip

    JAVA泡泡堂网络游戏的设计与实现

    setuptools-11.0-py2.py3-none-any.whl

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于python深度度量学习准确预测蛋白质二级结构源码(期末大作业).zip

    基于python深度度量学习准确预测蛋白质二级结构源码(期末大作业).zip已获导师指导并通过的97分的高分大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于python深度度量学习准确预测蛋白质二级结构源码(期末大作业).zip已获导师指导并通过的97分的高分大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于python深度度量学习准确预测蛋白质二级结构源码(期末大作业).zip已获导师指导并通过的97分的高分大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于python深度度量学习准确预测蛋白质二级结构源码(期末大作业).zip已获导师指导并通过的97分的高分大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 基于python深度度量学习准确预测蛋白质二级结构源码(期末大作业).zip已获导师指导并通过的97分的高分大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。

Global site tag (gtag.js) - Google Analytics