`

随机数

 
阅读更多
java.util.Random类

1.public Random()//不带种子,每次产生的随机数都不一样
    Creates a new random number generator.
2.public Random(long seed)//带种子,每次产生的随机数都是一样的

    Creates a new random number generator using a single long seed  

例子:

import java.util.Random;

public class TestRandomNum {

public static void randomTest() {
System.out.println("--------------test()--------------");
// 返回以毫秒为单位的当前时间。
long r1 = System.currentTimeMillis();
// 返回带正号的 double 值,大于或等于 0.0,小于 1.0。
double r2 = Math.random();
// 通过Random类来获取下一个随机的整数
int r3 = new Random().nextInt();
System.out.println("r1 = " + r1);
System.out.println("r3 = " + r2);
System.out.println("r2 = " + r3);
}

public static void testNoSeed() {
System.out.println("--------------testNoSeed()--------------");
// 创建不带种子的测试Random对象
Random random = new Random();
for (int i = 0; i < 3; i++) {
System.out.println(random.nextInt());
}
}

public static void testSeed1() {
System.out.println("--------------testSeed1()--------------");
// 创建带种子的测试Random对象
Random random = new Random(555L);
for (int i = 0; i < 3; i++) {
System.out.println(random.nextInt());
}
}

public static void testSeed2() {
System.out.println("--------------testSeed2()--------------");
// 创建带种子的测试Random对象
Random random = new Random();
random.setSeed(555L);
for (int i = 0; i < 3; i++) {
System.out.println(random.nextInt());
}
}

public static void main(String[] args) {
randomTest();
testNoSeed();
testSeed1();
testSeed2();
}

}
测试工具类,很有用:

import java.util.Random;

public class RandomUtils {
public static final String allChar = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static final String letterChar = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static final String numberChar = "0123456789";

/**
*   * 返回一个定长的随机字符串(只包含大小写字母、数字)   *   * @param length 随机字符串长度   * @return
* 随机字符串   
*/
public static String generateString(int length) {
StringBuffer sb = new StringBuffer();
Random random = new Random();
for (int i = 0; i < length; i++) {
sb.append(allChar.charAt(random.nextInt(allChar.length())));
}
return sb.toString();
}

/**
*   * 返回一个定长的随机纯字母字符串(只包含大小写字母)   *   * @param length 随机字符串长度   * @return
* 随机字符串   
*/
public static String generateMixString(int length) {
StringBuffer sb = new StringBuffer();
Random random = new Random();
for (int i = 0; i < length; i++) {
sb.append(allChar.charAt(random.nextInt(letterChar.length())));
}
return sb.toString();
}

/**
*   * 返回一个定长的随机纯大写字母字符串(只包含大小写字母)   *   * @param length 随机字符串长度   * @return
* 随机字符串   
*/
public static String generateLowerString(int length) {
return generateMixString(length).toLowerCase();
}

/**
*  * 返回一个定长的随机纯小写字母字符串(只包含大小写字母)   *   * @param length 随机字符串长度   * @return
* 随机字符串   
*/
public static String generateUpperString(int length) {
return generateMixString(length).toUpperCase();
}

/**
*   * 生成一个定长的纯0字符串   *   * @param length 字符串长度   * @return 纯0字符串   
*/
public static String generateZeroString(int length) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
sb.append('0');
}
return sb.toString();
}

/**
*   * 根据数字生成一个定长的字符串,长度不够前面补0   *   * @param num 数字   * @param fixdlenth
* 字符串长度   * @return 定长的字符串   
*/
public static String toFixdLengthString(long num, int fixdlenth) {
StringBuffer sb = new StringBuffer();
String strNum = String.valueOf(num);
if (fixdlenth - strNum.length() >= 0) {
sb.append(generateZeroString(fixdlenth - strNum.length()));
} else {
throw new RuntimeException("将数字" + num + "转化为长度为" + fixdlenth
+ "的字符串发生异常!");
}
sb.append(strNum);
return sb.toString();
}

/**
*   * 根据数字生成一个定长的字符串,长度不够前面补0   *   * @param num 数字   * @param fixdlenth
* 字符串长度   * @return 定长的字符串
*/
public static String toFixdLengthString(int num, int fixdlenth) {
StringBuffer sb = new StringBuffer();
String strNum = String.valueOf(num);
if (fixdlenth - strNum.length() >= 0) {
sb.append(generateZeroString(fixdlenth - strNum.length()));
} else {
throw new RuntimeException("将数字" + num + "转化为长度为" + fixdlenth
+ "的字符串发生异常!");
}
sb.append(strNum);
return sb.toString();
}

public static void main(String[] args) {
System.out.println(generateString(15));
System.out.println(generateMixString(15));
System.out.println(generateLowerString(15));
System.out.println(generateUpperString(15));
System.out.println(generateZeroString(15));
System.out.println(toFixdLengthString(123, 15));
System.out.println(toFixdLengthString(123L, 15));
}

}
3.方法nextInt

public int nextInt(int n)

    Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this

random number generator's sequence.

4.nextInt

public int nextInt()

    Returns the next pseudorandom, uniformly distributed int value from this random number generator's sequence. The general contract of

nextInt is that one int value is pseudorandomly generated and returned. All 232 possible int values are produced with (approximately)

equal probability.

总结
  1、随机数很常用,在Java有三种产生方式(),以Random随机数的使用最为复杂。
  2、Random类对象有是否带种子之分,带种子的只要种子相同,多次运行,生成随机数的结果总是那样。
  3、带种子随机数的带种子的对象创建方式有两种,效果一样。但是带种子的随机数用处似乎不大。
  4、Random的功能涵盖了Math.random()的功能。
  5、可以通过随机数去做实现随机字符串等复杂的随机数据。
  6、不要研究不重复的随机数,意义不大。
附注:三种随机数的生成方式:
  在Java中,随机数的概念从广义上将,有三种。
  1、通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。
  2、通过Math.random()返回一个0到1之间的double值。
  3、通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大
分享到:
评论

相关推荐

    verilog产生高斯随机数

    在数字电路设计中,有时我们需要模拟随机事件,这就需要用到随机数生成器。Verilog作为一种硬件描述语言,可以用来实现这样的功能。本篇文章将探讨如何在Verilog中生成高斯随机数,具体步骤包括利用移位寄存器产生...

    抽取柯西分布随机数_matlab_柯西_生成柯西分布随机数_

    在MATLAB中生成柯西分布随机数是一项常见的统计模拟任务,尤其在处理异常值或噪声数据时,柯西分布常被用作一个有用的模型。本文将深入探讨如何使用MATLAB来生成柯西分布的随机数,同时解释其背后的数学原理。 柯西...

    易语言取不重复随机数

    在易语言中,生成不重复随机数是一项常见的需求,特别是在游戏开发、数据分析或者算法设计等场景。本文将深入探讨如何在易语言中实现取不重复随机数的功能。 首先,我们需要了解易语言中的随机数生成函数。在易语言...

    生成随机数小程序

    在IT领域,生成随机数是一项基础且重要的任务,广泛应用于各种场景,如模拟实验、密码学、游戏开发、数据分析等。本项目名为“生成随机数小程序”,它提供了一个便捷的工具,能够根据用户需求生成指定数量的随机数,...

    易语言取指定位数的随机数

    在编程领域,生成随机数是一项常见的任务,尤其在游戏开发、加密算法、模拟实验和测试用例中。易语言作为一款中国本土开发的、面向普通用户的编程语言,它提供了丰富的函数和模块来帮助用户实现各种功能,其中包括...

    MFC实现产生随机数

    总结起来,通过MFC在VC++中实现生成随机数的功能,你需要创建一个MFC对话框应用程序,添加一个按钮控件,处理按钮点击事件,然后在事件处理函数中使用C++的标准库生成随机数。这个过程涉及了MFC的消息映射、控件交互...

    VB随机数小程序

    在VB(Visual Basic)编程语言中,生成随机数是一项基础且重要的技能,尤其对于初学者而言,理解并能熟练运用随机数生成函数是提升编程能力的关键步骤。"VB随机数小程序"这个项目正好为我们提供了一个学习和实践的...

    汇编语言产生随机数并运算

    在“汇编语言产生随机数并运算”这个主题中,我们将探讨如何利用汇编语言生成随机数以及如何对这些随机数进行算术运算。 随机数在各种应用程序中都有广泛的应用,比如模拟、加密、游戏、统计计算等。在汇编语言中,...

    易语言猜随机数源码

    "易语言猜随机数源码"是一个教学示例,旨在帮助用户理解如何在易语言中生成随机数并实现一个简单的猜数字游戏。在这个游戏中,计算机将生成一个随机数,然后让用户尝试猜测这个数字,直到猜对为止。 首先,我们需要...

    随机数自检-扑克检测

    在IT行业中,随机数生成是许多算法和应用的基础,如模拟、加密、游戏开发等。在C#编程语言中,生成随机数的过程涉及到System.Random类的使用。本项目"随机数自检-扑克检测"旨在通过一个实际的扑克牌检测案例来验证...

    java 求最大的随机数

    在Java编程语言中,生成随机数是一项常见的任务,特别是在各种算法和模拟场景中。要找到“最大的随机数”,首先我们需要了解Java中生成随机数的方法。Java提供了`java.util.Random`类来生成随机数。下面我们将深入...

    计算统计学课程作业30种随机数发生器(组合随机数发生器)matlab代码

    在计算统计学中,随机数生成器是一种至关重要的工具,特别是在模拟实验、数据分析以及建模等领域。本课程作业聚焦于30种不同的随机数发生器,其中包括5种基础的随机数发生器及其两两组合形成的25种组合随机数发生器...

    excel中批量设置随机数

    默认情况下,Excel提供的RAND()函数会生成0到1之间的随机浮点数,每次打开工作簿时,这个函数都会重新计算,产生新的随机数。然而,这并不符合某些场景下对稳定随机数的需求。这时,我们可以借助VBA(Visual Basic ...

    S7-300生成随机数.rar

    这个“S7-300生成随机数.rar”压缩包很可能包含了关于如何在S7-300 PLC中实现随机数生成的详细教程或代码示例。 生成随机数在工业控制中有多种用途,例如模拟真实世界的不确定性、进行测试与调试、或者在一些随机化...

    微信小程序源码(随机数块生成)

    在这个项目中,我们关注的是一个基于微信小程序的源码,它涉及到随机数块生成的功能。源码是开发者自研的,采用了一种名为uni-app的框架来构建。 uni-app是一个跨端开发框架,它允许开发者用一套代码同时适配iOS、...

    Winform-随机数生成器

    在这个"Winform-随机数生成器"项目中,我们关注的核心是利用编程技术来生成各种类型的随机数,包括序列号、纯数字以及字符串。这个工具的灵活性在于用户能够自定义生成纯数字时的位数,以满足不同场景的需求。 首先...

    0-100随机数生成器

    【随机数生成器详解】 随机数在计算机科学中扮演着重要的角色,特别是在模拟、加密、游戏开发、统计分析等领域。"0-100随机数生成器"是一个使用JAVA编程语言实现的工具,它能够生成0到100之间(包括0和100)的随机...

    国密认证随机数测试工具rnd-20190527.zip

    《国密认证随机数测试工具详解》 在信息安全领域,随机数生成器是至关重要的组件,广泛应用于加密、签名、安全协议以及POS机交易验证等多个环节。国密认证的随机数测试工具,如"rnd-20190527.zip",是确保随机数...

    产生随机数的一个小程序

    在IT领域,随机数生成是计算任务中常见且至关重要的部分。随机数广泛应用于各种场景,包括模拟与仿真、加密算法、游戏开发、统计分析、机器学习等。在这个"产生随机数的一个小程序"中,我们可以从不同的文件名推测出...

Global site tag (gtag.js) - Google Analytics