`
xiaocao000
  • 浏览: 224393 次
  • 性别: 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随机色彩应用

    WX小程序源码小游戏类

    WX小程序源码小游戏类提取方式是百度网盘分享地址

    grpcio-1.47.2-cp310-cp310-musllinux_1_1_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    cryptography-42.0.3-cp37-abi3-musllinux_1_1_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    2021131528+谢镕汕.zip

    2021131528+谢镕汕.zip

    sja1301.i386.tar.gz

    SQLyong 各个版本,免费下载 SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。

    VB学生宿舍管理系统(源代码+论文).rar

    计算机专业毕业设计VB精品论文资源

    基于多种编程语言的露营服务平台设计源码

    本项目是基于多种编程语言的露营服务平台设计源码,包含4315个文件,其中包括1752个JavaScript文件、885个TypeScript文件、420个WXML模板文件、406个WXSS样式文件、403个JSON配置文件、233个Markdown文档、182个WXS文件、13个PNG图像文件和6个MAP文件。系统专注于提供露营服务平台功能,支持地点搜索、预订功能等功能,为用户提供了一个稳定、高效的露营服务平台。

    菜日常菜日常菜日常菜日常

    菜日常菜日常菜日常菜日常

    debugpy-1.6.7.post1-cp310-cp310-win_amd64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip

    源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip

    KF32Lxxx_StdPeriph_Lib.zip

    芯旺微 Kungfu芯片资料

    VB文档管理信息系统设计(源代码+系统+答辩PPT).rar

    计算机专业毕业时间之VB精品论文源代码资源

    1716894470778.jpg

    1716894470778.jpg

    SQLyog-13.1.5-0.x64Community.exe

    SQLyog-13.1.5-0.x64Community

    残差注意力-基于Pytorch实现的残差注意力网络-附项目源码-优质项目实战.zip

    残差注意力_基于Pytorch实现的残差注意力网络_附项目源码_优质项目实战

    不同月份用户手机账单数据,包括短信费用、上网费用、折扣金额等等

    不同月份用户手机账单数据,包括短信费用、上网费用、折扣金额等等 字段包括 sms_fee web_fee extra_fee total_fee discount extra_discount actual_fee paid_fee等等

    ADSP-BF533的例程源码1:EBIU总线驱动源码

    ADSP-BF533的EBIU总线驱动源码,

    源代码-ExcelToAccess批量导入数据 v1.0.zip

    源代码-ExcelToAccess批量导入数据 v1.0.zip

Global site tag (gtag.js) - Google Analytics