A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张权 于 2013-4-4 18:42 编辑

  我想问的不是怎样用Random类获取一个随机数, 那样子我会, 就是直接调用方法就好, 我想问的是获取随机数的机制, 也就是说, java虚拟机在运行某段获取随机数的代码时,到底是怎样来获取随机数的?  只需要讲解一下大概思路就好, 因为要完全讲解清楚应该很难!!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

6 个回复

倒序浏览
Random 类实现的算法使用一个 protected 实用工具方法,每次调用它最多可提供 32 个伪随机生成的位-----摘自JDK文档
回复 使用道具 举报
李道福 发表于 2013-4-4 17:32
Random 类实现的算法使用一个 protected 实用工具方法,每次调用它最多可提供 32 个伪随机生成的位-----摘 ...

我是想要知道到底是怎么算的!!:L
回复 使用道具 举报
本帖最后由 郭沐昌 于 2013-4-4 19:33 编辑

为生成数字,程序首先会创建一个 Random(随机)对象。由于自变量是在创建过程中传递的,所以 Java 将
当前时间作为一个“种子值”,由随机数生成器利用。通过Random 对象,程序可生成许多不同类型的随机数
字。做法很简单,只需调用不同的方法即可:nextInt(),nextLong(),nextFloat()或者nextDouble()。
  1. public class WhileTest {
  2.   public static void main(String[] args) {
  3.     double r = 0;
  4.     while(r < 0.99d) {
  5.       r = Math.random();
  6.       System.out.println(r);
  7.     }
  8.   }
复制代码
该方法的作用是产生 0 和1 之间(包括 0,但不包括1)的一个double值。while的条件表达式意思是说:“一直循环下去,直到数字等于或大于 0.99”。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
你这个问题 回答不出来,网上百度了一下  http://mazego.blog.51cto.com/939199/621903
回复 使用道具 举报
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
回复 使用道具 举报
郭沐昌 发表于 2013-4-4 19:31
为生成数字,程序首先会创建一个 Random(随机)对象。由于自变量是在创建过程中传递的,所以 Java 将
当前 ...

能不能解释一下" java将当前时间作为一个"种子值" 是什么意思?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马