跟随机数有关的java小程序_与随机数相关的小程序 | 学步园

这学期的课程是前所未有过的紧张,前几天终于结课了!中间休息了两天,然后这两天又开始做课程设计了!

在休息的这两天,闲来无事做了个小程序,又在网上找了暑假实习生的职位,投了广州的CVT,做了一套专业题,虽然题目没做完,但是其中有一题让我很受益!先来说说我的那个小程序吧!我当时就想实现以下,N年前在文曲星上玩过的最简单的游戏猜数字!(呵呵,我知道这个程序,只要是个学过

/*本代码是:猜数字游戏(可多局玩)的源代码!*/

#include

/*下面的rand()函数包含于头文件stdlib.h中*/

#include

#include

main()

{

int a=0,b=0;

struct tm *newtime;

long ltime;

while(1)

{

printf("Hello, My friend,if you want to close this game,please input 'z'!\nIf you want to play this game,please input a char ,it isn't 'z'!\n");

if(getchar()=='z')

{

break;

}

else

{

time(&ltime);

newtime=gmtime(&ltime);

/*printf("%d",newtime->tm_sec);*/

/*上面的printf语句是为了输出当前系统时间中的秒数。*/

a=rand()%100+rand()%(newtime->tm_sec);

printf("Please guess the number(please input a interger number):\n");

scanf("%d",&b);

while(1)

{

if(a>b)

{

printf("Your number is low!Please input again:\n");

scanf("%d",&b);

}

else

if(a

{

printf("Your number is high!Please input again:\n");

scanf("%d",&b);

}

else

if(a==b)

{

printf("OK!You are right!\n");

break;

}

}

getchar();

/*接受最后这个数,即正确数字输入后的回车符!*/

}

}

}

我第一次做的时候不是这样的,我当时仅仅用了rand()%100,这样以来程序虽然可以运行,但是太没意思了,因为每次猜的数字都一样,虽然第一次肯能要多次才能猜对,但是只要猜对后,下次猜时肯定还是这个数,只要记住这个数,除了第一次,以后每次猜时一次肯定能猜对。

这是因为rand()函数是个伪随机函数,即用这个函数产生的数都不是绝对的随机数,虽然现在我们没有办法产生绝对的随机数,但是我们有办法,产生一些改善的伪随机数,我当时就在想别人以前肯定也遇到过这类问题,网上肯定有解决办法,但是我还是想自己先动动脑子,如果实在做不出来,再去google或baidu吧!

最后,我还是想出了自己的方法,由于随机数的特性是没有规律变化的,rand()函数只是实现了一次没有规律的数,但是没有变化。我当时在想计算机中哪种东西是变化的呢?最后我想到了系统时间。于是我的想法是在rand()%100的基础上,在与(rand()%(当前系统时间的秒数))结合,这样就会产生相对效果好点的随机数了!具体实现见上面的代码吧!

本文是原创,转载请注明出处!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值