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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄泉 中级黑马   /  2014-4-5 23:07  /  1453 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

晚上看基础书,发现一个有意思的小程序。分享一下!
  1. /*
  2. 猜数字游戏。产生0-9的随机数。创建对象来猜。
  3. 结束条件:猜中数字.
  4.         思路:
  5.                 1.需要使用一个方法来产生随机数。        需要定义一个产生随机数的机器
  6.                 2.要定义一个变量来记录猜测的数据。        猜测的是人,所以需要定义一个人对象  也就是类。
  7.                 3.将其进行比较。如果猜中则打印        "我猜中啦,哈哈,我猜的是"加上数字。
  8.                 这是一个方法,如果满足条件就打印语句,判断结构
  9. */

  10. class Rng
  11. {
  12.         public int rng()
  13.         {
  14.                 return  (int)(Math.random()*10);//系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值
  15.         }
  16. }

  17. class People
  18. {
  19.         String name;
  20.         int guess;
  21.         People(String name , int guess)
  22.         {
  23.                 this.name = name;
  24.                 this.guess = guess;
  25.         }

  26.         public void guess()
  27.         {
  28.                 System.out.println("我猜数字是"+this.guess);
  29.         }
  30. }

  31. class Demo
  32. {
  33.         public static void main(String[] args)
  34.         {
  35.                
  36.                 People p = new People("张三",4);
  37.                 cai(p);
  38.                
  39.         }

  40.         public static void cai(People p)
  41.         {
  42.                 Rng r = new Rng();
  43.                
  44.                 boolean wrong = false;

  45.                 while(true)
  46.                 {
  47.                         wrong = (p.guess == r.rng())?true:false;

  48.                         if(wrong)
  49.                         {       
  50.                                 System.out.println(p.name+":哈哈,我猜对啦,我猜的是:"+p.guess);
  51.                                 break;
  52.                         }
  53.                         else
  54.                                 System.out.println("不好意思,没有猜中");
  55.                 }
  56.         }
  57. }
复制代码


2 个回复

倒序浏览
楼主,伪随机数的方法,其实可以通过如下代码实现更精确的随机数范围控制:
  1. int num = new Random().nextInt(10);//这边的入参是10,返回的随机数为区间[0,10)的整数
复制代码
回复 使用道具 举报
这个代码,核心就是随机数的产生:
方法1、Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机
方法2、在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数、随机float、随机double,随机long
方法3、在我们的System类中有一个currentTimeMillis()方法,这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是long,我们可以拿他作为一个随机数,我们可以拿他对一些数取模,就可以把他限制在一个范围之内
并且,对于方法二中的Random类有以下说明:

java.util.Random类有两种方式构建方式:带种子和不带种子

不带种子:
此种方式将会返回随机的数字,每次运行结果不一样

public class RandomTest {
public static void main(String[] args) {
  java.util.Random r=new java.util.Random();
for(int i=0;i<10;i++){
    System.out.println(r.nextInt());
}

}
带种子:
此种方式,无论程序运行多少次,返回结果都是一样的

public static void main(String[] args) {
  java.util.Random r=new java.util.Random(10);
  for(int i=0;i<10;i++){
    System.out.println(r.nextInt());
  }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马