没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
实例解析常用的 java 随机数生成办法
随机数是任何一种编程语言最基本的特征之一,在技术开发中应用很广泛,因为有时我
们需要随机生成一个固定长度的数字、字符串亦或者是需要随机生成一个不定长度的数
字、或者进行一个模拟的随机选择等。Java 就为我们提供了最基本的工具,可以帮助
开发者生成不同条件下需要的随机数。java 中产生随机数和 c 的差不多,一般有两种随
机数,一个是 Math 中 random()方法,一个是 Random 类。不过不管是 c 还是 java,
要产生随机数都需要设置随机数种子,如果设置的是一样的话,每次获得的随机数是一
样的。下面来汇总一下常见的不同类型的 java 随机数是如何生成的。
java 产生随机数的基本方法
方法一:在 j2se 里我们可以使用 Math.random()方法来产生一个随机数,这个产生
的随机数是 0-1 之间的一个 double,我们可以把他乘以一定的数,比如说乘以 100,
他就是个 100 以内的随机,这个在 j2me 中没有。
(数据类型)(最小值+Math.random()*(最大值-最小值+1))
例 1:从 1 到 10 的 int 型随数
(int)(1+Math.random()*(10-1+1))
例 2:
随机生成 0~100 中的其中一个数
在上面我们已经知道了 Math.random()返回的只是从 0 到 1 之间的小数,如果要 50
到100,就先放大50倍,即0到50之间,这里还是小数,如果要整数,就强制转换int,
然后再加上 50 即为 50~100。
最终代码:
(int)(Math.random()*50) + 50
方法二:在 java.util 这个包里面提供了一个 Random 的类,我们可以新建一个 Random
的对象来产生随机数,他可以产生随机整数、随机 float、随机 double,随机 long,
这个也是我们在 j2me 的程序里经常用的一个取随机数的方法。
Random random = new Random();//默认构造方法
Random random = new Random(1000);//指定种子数字
在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的
变换,从而产生需要的随机数字。
相同种子数的 Random 对象,相同次数生成的随机数字是完全相同的。也就是说,两
个种子数相同的 Random 对象,第一次生成的随机数字完全相同,第二次生成的随机
数字也完全相同。
例:获取[0, 100)之间的 int 整数。
int i2 = random.nextInt(100);
Random 的函数接口:
// 构造函数(一): 创建一个新的随机数生成器。 Random() // 构造函数(二): 使用
单个 long 种子创建一个新随机数生成器:
public Random(long seed) { setSeed(seed); }
next 方法使用它来保存随机数生成器的状态。
Random(long seed) boolean nextBoolean() // 返回下一个“boolean 类型”伪随
机数。
void nextBytes(byte[] buf) // 生成随机字节并将其置于字节数组 buf 中。
double nextDouble() // 返回一个“[0.0, 1.0) 之间的 double 类型”的随机数。 float
nextFloat() // 返回一个“[0.0, 1.0) 之间的 float 类型”的随机数。
int nextInt() // 返回下一个“int 类型”随机数。
int nextInt(int n) // 返回一个“[0, n) 之间的 int 类型”的随机数。
long nextLong() // 返回下一个“long 类型”随机数。
synchronized double nextGaussian() // 返回下一个“double 类型”的随机数,它
是呈高斯(“正常地”)分布的 double 值,其平均值是 0.0,标准偏差是 1.0。
synchronized void setSeed(long seed) // 使用单个 long 种子设置此随机数生成
器的种子。
Random 类中的常用方法:
Random 类中的方法比较简单,每个方法的功能也很容易理解。需要说明的是,
Random 类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成
的几率是均等的。下面对这些方法做一下基本的介绍:
剩余17页未读,继续阅读
资源评论
Andy&lin
- 粉丝: 97
- 资源: 214
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功