java问题  Random r = new Ranmom(47)   里面的这个47是什么意思? 谢谢!!

解决方案 »

  1.   

    seed  种子
    根据你给的种子生成随机数序列   不同的种子,随机数序列不同       概念上就是这样了 ·~   理解不够·· 
      

  2.   

    我也没什么理解  不过一般都这么用(new Date()).getTime()   用这个当作种子
      

  3.   

    47作为随机种子用,为的就是产生随机数。
    而为了每次取得随机数不同,随机种子必须也要不同才行。如果用构造一个指定种子的Random,则如果所指定的种子相同(本例为47),
    且调用的方法相同,则产生的随机数也相同。
      

  4.   

    new Random(47);
    相当于
    Random rnd = new Random();
    rnd.setSeed(47);一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数。setSeed 的方法介绍:
    使用单个 long 种子设置此随机数生成器的种子。
    setSeed 的常规协定是它更改此随机数生成器对象的状态,使其状态好像是刚刚使用参数 seed 作为种子创建它的状态一样。
    通过将种子自动更新为 (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1)并清除nextGaussian()使用的haveNextNextGaussian 标志,Random 类可实现 setSeed 方法。 
    Random 类实现的 setSeed 恰好只使用 48 位的给定种子。
    但是,通常重写方法可能使用 long 参数的所有 64 位作为种子值。
    随机数种子就是产生随机数的第一次使用值, 机制是通过一个比较复杂的函数,将这个种子的值转化为随机数空间中的某一个点上,并且产生的随机数均匀的散布在空间中。 以后产生的随机数都与前一个随机数有关。由此看来,对于一些由数学封装好的方法,没必要深究,不过有兴趣的话另说。
      

  5.   

    Random
    public Random(long seed)使用单个 long 种子创建一个新随机数生成器: 
     public Random(long seed) { setSeed(seed); }next 方法使用它来保存随机数生成器的状态。 参数:
    seed - 初始种子。
      

  6.   

    为什么不能随便给一个数呢:因为:
    public class Randomextends Objectimplements Serializable此类的实例用于生成伪随机数流。此类使用 48 位的种子,使用线性同余公式对其进行修改(请参阅 Donald Knuth 的《The Art of Computer Programming, Volume 2》,第 3.2.1 节)。 所以不能修改,是它内部封装,楼主知道就可以了!
      

  7.   

    上面其实都是java.util.Random类的API文档,说的绝对标准,楼主可以看看
      

  8.   

    http://topic.csdn.net/u/20080917/14/0e689a6e-8c57-43e7-8f27-08676e517d0d.htmlLZ看看答案吧,我在这里已经说的很明白了。
      

  9.   

    http://www.chinabs.net/webjava/default.asp?infoid=456
    这里的解释很详细
      

  10.   

    Random(long seed) 
              使用单个 long 种子创建一个新随机数生成器: public Random(long seed) { setSeed(seed); } next 方法使用它来保存随机数生成器的状态。
      

  11.   

    api最权威Random(long seed) 
              使用单个 long 种子创建一个新随机数生成器: public Random(long seed) { setSeed(seed); } next 方法使用它来保存随机数生成器的状态。