博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
猜数字游戏
阅读量:5286 次
发布时间:2019-06-14

本文共 2054 字,大约阅读时间需要 6 分钟。

  猜数字游戏,被用烂的标题,百度一下,随处可见。

  今天开篇用这一标题,实在是无标题可选了,主要是不知道自己写点什么,不知不觉中,就把下面代码写好了。
  这个是我第一意识产生的东西,仔细修改,还可以更好,盯着这段代码,突然发现可以写点什么了。

#include 
#include
#include
int main(void){ int initArr[4]= {-1}; srand(time(NULL)); //=====随机生成一个猜测数 ↓↓↓↓==== initArr[0] = rand()%9+1;//首位数字1~9 for(int i=1; i<4; i++) //生成2、3、4位上的数字 {GOTO1: initArr[i] = rand()%10; for(int j=0; j
9999 || input < 1000 ) continue; itemp = input; initArr2[3] = itemp%10; itemp = itemp/10; initArr2[2] = itemp%10; itemp = itemp/10; initArr2[1] = itemp%10; itemp = itemp/10; initArr2[0] = itemp%10; for(int i=0; i<4; i++) { for(int j=0; j<4; j++) { if(initArr[i] == initArr2[j]) { if (i==j) countA++; else countB++; } } } times++; printf(" %4d %4d %dA %dB\n",times,input,countA,countB); } while(countA != 4); printf("恭喜您,回答正确!"); printf("pause"); return (0);}

(假设rand生成所有随机数的概率相同,方便以下的概率计算,其实rand生成所有随机数概率不同)

本贴中代码实现的自动生成4位数字

  比如要生成随机数ABCD,首先ABCD互不相等,再次A不为0。

  可用不能重复数字0,1,2,3,4,5,6,7,8,9。

  • 第1位数字选择,9选(弃0),假设选中A,命中率9/9
  • 第2位数字选择,9选(弃A),假设选中B,命中率9/10
  • 第3个数字选择,8选(弃A、B),假设选中C,命中率8/10
  • 第4个数字选择,7选(弃A、B、C),命中率7/10

  所以,总体命中率为9/9 * 9/10 * 8/10 * 7/10 = 0.504

  也就是说,用本帖中的代码生成一个符合要求的4位数,大概需要4/0.504=7.9365次生成随机数操作。
=======================

本题可以使用下面方法生成随机数

  比如定义一个数字 array[10]={0,1,2,3,4,5,6,7,8,9};
  array中的最大索引maxIndex=10; .................①
  每次生成随机数 randNum=rand()%maxIndex;
  在array中找到这个数字,并从数组中删除,maxIndex值减一,假设randNum==6,array中值6对应的数字后面一位移动到前面一位,最终array[10]={0,1,2,3,4,5,7,8,9,9},此时不要忘记了maxIndex在上面已经做了减一操作,maxIndex==9;
  继续执行①,直到产生4个数字。

  方法很多很多吧,举不胜举,选择最擅长,最合理的方法。

  程序设计分创意阶段、规划阶段、实现阶段和调试阶段,只有养成了良好的设计习惯,才能保证在制作大项目的时候游刃有余。倘若一上手就冲动的写程序会导致最终的寸步难行,甚至中途放弃。

 

转载于:https://www.cnblogs.com/preacher/p/4828526.html

你可能感兴趣的文章
派遣函数
查看>>
教程6--配置ssh
查看>>
C#串口扫描枪的简单实现
查看>>
SharePoint各版本信息
查看>>
Python数据结构——散列表
查看>>
.Net学习笔记----2015-07-08(基础复习和练习03)
查看>>
IDEA 中Spark SQL通过JDBC连接mysql数据库
查看>>
组合数学之母函数问题
查看>>
JavaScript创建对象之单例、工厂、构造函数模式
查看>>
CodeForces1154F
查看>>
TLS 9.2C
查看>>
CodeForces1214A
查看>>
LuoGuP4551最长异或路径
查看>>
CodeForces1214C
查看>>
CodeForces1214B
查看>>
CodeForces1214D
查看>>
CodeForces727C
查看>>
XML(1)——shema约束之命名空间
查看>>
js异步请求发展史和yield
查看>>
imageWithRender(图片的渲染模式)
查看>>