Java实现自动猜数(猜数游戏进阶版)

题目:

java自动生成一个0到1000000000之间的数,并且自己猜数(知道猜对为止,电脑会告诉你猜大了还是猜小了),并记录猜数次数和猜数的值。

首先我们要创建一个随机数,并且让他作为我们要猜的数。

		 Random r=new Random();
		 int x=r.nextInt(1000000000);

想象一下,如果我们猜数,我们不会盲目的猜(如果一直瞎猜也会成功,但是消费的时间和次数是很大的),我们会不停地压缩猜数的范围,例如我们猜的数是21,我们第一次猜的数是40,40比我们猜的数大,我们会在0到40之间猜数,我们第二次猜的数是11,11比我们要猜的数小,所以下次我们猜的数会在11到40之间,如此我们在以后的猜数中会不断压缩范围(边界问题),从而猜到我们的目标数。

我们用xr和xl作为右边界和左边界count作为猜数次数,并且进行初始化(xl=0,xr=1000000000,count=0)。

int xl=0,xr=1000000000,count=0;

我们通过while循环让机器不断进行猜数,每一次猜数都会压缩范围,直到猜到数并且跳出循环。

全部代码如下:

import java.util.Random;

public class cai_shu {	
	public static void main(String[] args) {	
		 Random r=new Random();
		 int x=r.nextInt(1000000000);
		int xl=0,xr=1000000000,count=0;
		System.out.println("要猜的数是"+x);
		
		boolean key=true;
		while(key) {
			count++;//加次数
			int y=new Random().nextInt(xr);//机器猜的数
			if(y<=xl) {
				y=xl+new Random().nextInt(xr-xl);//让机器猜的数始终保持在左右边界内。
			}
			System.out.println("这次猜的数是"+y);
			if(y==x) {
				key=false;//跳出循环,使用break的话,while循环的条件是xr!=xl。
				System.out.println("终于猜对了");
			}else {//没猜中的话需要压缩范围
				if(y>x&&y<=xr) {
					xr=y;
				}
				if(y<x&&y>=xl){
					xl=y;
				}	
			}	
		}
		System.out.println("一共猜了"+count+"次");
	}
}

注意类名要保持一致哦!

经过多次测试,测试结果一般会保持在60次之内(效果很理想!)。

 大功告成,有东西不明白的请在评论区里留言解决。。。。。

thanks everyone!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无忧#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值