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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© laiminghui 高级黑马   /  2013-6-25 22:57  /  2445 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙百鑫 于 2013-7-1 07:54 编辑



随机生成器:



RandomGenerator  rgen = RandomGenerator.getInStant();


种子:

rgen = setSeed();



问题一:
在不同的电脑上 相同的程序 使用相同的随机生成器 和 设置相同的种子 不同的电脑上显示的随机数会不会相同呢??


问题二:
种子设置
rgen = setSeed(1);这里设置为1,会得到以1开头的序列中的随机数。
rgen = setSeed(3);这里设置3,会得到以3开头的随机数,问题来了:生成是随机数会不会出现 1 2 也就是比3 小的数字。


评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 赞一个!

查看全部评分

13 个回复

倒序浏览

回帖奖励 +5

。。呵呵,,先占楼
回复 使用道具 举报
首先你对这个种子理解有问题,我查了查,然后敲了点代码
2个Random中的种子一样的话,第一次产生的随即数一定相同,当然第二次也是一样……!!!
也就是说,你要让2个不相同的话,设定为不同的种子,那就会保证不一样!!!
具体我们使用的时候一般是不用种子!!

下面是我的代码
  1. Random rr = new Random();
  2.                 rr.setSeed(System.currentTimeMillis());
  3.                 int[] attr = new int[10];
  4.                 for(int i=0; i<attr.length; i++){
  5.                         attr[i] = rr.nextInt(10);
  6.                         System.out.println(attr[i]);
  7.                 }
复制代码
种子是系统时间,所以每次的种子都不同,所以每次产生的数值就不同

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 赞一个!

查看全部评分

回复 使用道具 举报
以前我还真不知道这个,谢谢了
回复 使用道具 举报
问题一:
产生的相同是相同的。种子相同产生的随机数就相同。
问题二:
种子和生成随机数的范围无关。
nextInt(int)
生成的范围是0到参数范围内的随机数。种子固定生成的随机数就固定了。
回复 使用道具 举报
张承富 发表于 2013-6-26 00:26
首先你对这个种子理解有问题,我查了查,然后敲了点代码
2个Random中的种子一样的话,第一次产生的随即数一 ...

:lol   恩
回复 使用道具 举报
张承富 发表于 2013-6-26 00:27
以前我还真不知道这个,谢谢了

:lol   ............
回复 使用道具 举报
王靖远 发表于 2013-6-26 01:48
问题一:
产生的相同是相同的。种子相同产生的随机数就相同。
问题二:

:lol   恩
回复 使用道具 举报
Math类中有个方法:random可以产生随机数
回复 使用道具 举报
还没回答我的第二个疑问  。。。 。。。
回复 使用道具 举报
  1. 获取随机数的两种方式
  2. /*
  3.   实现生成一个1-100之间的随机数。
  4. */

  5. //引入随机数类
  6. import java.util.Random;

  7. class RandomTest
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                 produceRandomNumber1();
  12.                 produceRandomNumber2();

  13.         }

  14.         public static void produceRandomNumber1(){
  15.                 System.out.println(" 调用Math类的random()随机函数:");
  16.                 for(int i=1;i<=100;i++){
  17.                         //int randomNumber = (int)(Math.random()*100);
  18.                         //返回最大的double值,该值小于等于参数,并等于某个整数
  19.                         double num = Math.ceil(Math.random()*100);
  20.                         //返回带正号的 double值,该值大于等于0.0且小于1.0
  21.                         long randomNumber = Math.round(num);
  22.                         System.out.print(randomNumber+"\t");
  23.                         if(0 == i%10)
  24.                                 System.out.println();                               
  25.                 }
  26.         }

  27.         public static void produceRandomNumber2(){
  28.                 System.out.println(" 使用Random类的nextInt()函数:");
  29.                 Random random = new Random();
  30.                 for(int x=1;x<=100;x++){
  31.                         //返回一个伪随机数,它是取自此随机数生成器序列的
  32.                         int num = random.nextInt(100);
  33.                         System.out.print(num+"\t");
  34.                         if(0 == x%10){
  35.                                 System.out.println();
  36.                         }
  37.                 }
  38.         }
  39. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报

c:\random_numbers.JPG
回复 使用道具 举报
帖子解决。请及时联系版主改成已解决。不然会漏分的哦~
回复 使用道具 举报
孙百鑫 发表于 2013-7-1 07:54
帖子解决。请及时联系版主改成已解决。不然会漏分的哦~

你好  我以前找得到  已解决在哪里  现在找不到了 我不能自己编辑了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马