社区
C语言
帖子详情
求教一个c小程序。
Truly
2002-08-24 10:16:36
是这样一个问题,就是计算机事先生成4个0-9且不重复的随机序列,然后由用户来猜,如果位置和数字完全正确就是a,如果数字正确而位置不正确就是b,比如计算机抽出2,9,3,1,如果回答2,9,1,0,就输出2a1b。
一个文曲星上的游戏。
关键是求教怎样生成4个不重复的随机数。
...全文
51
18
打赏
收藏
求教一个c小程序。
是这样一个问题,就是计算机事先生成4个0-9且不重复的随机序列,然后由用户来猜,如果位置和数字完全正确就是a,如果数字正确而位置不正确就是b,比如计算机抽出2,9,3,1,如果回答2,9,1,0,就输出2a1b。 一个文曲星上的游戏。 关键是求教怎样生成4个不重复的随机数。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Truly
2002-08-24
打赏
举报
回复
谢谢zheng_can(nothrow) 和kingofvc(还是喜欢97) 。
n5(先学好C++再说) 的方法确实存在缺陷,可能导致无限延迟。
zhichao8336
2002-08-24
打赏
举报
回复
重新设置随机种子,具体怎么样自己看
zheng_can
2002-08-24
打赏
举报
回复
vector<int> tmp( 10 );
vector<int> result( 4 );
int p = 0;
for ( int i = 0; i < 4; ++i ) {
p = ( p + rand() ) % 10;
while ( tmp[p] != 0 ) { p = ( p + 1 ) % 10; }
tmp[p] = p;
result[i] = p + 1;
}
kingofvc
2002-08-24
打赏
举报
回复
这样还是听麻烦 还是在给number【i】赋值时用randnum-1吧
kingofvc
2002-08-24
打赏
举报
回复
哦 你要的是0~9的话 rand()%10;
kingofvc
2002-08-24
打赏
举报
回复
int number[4];
int select[10];
for(int i=0;i<10;i++)
{select[i]=0;}
srand((unsigned)time());
for(i=0;i<4;)
{
randnum=rand()%11;
if(!select[randrum])
{
select[randrum]=randnum;
number[i]=randum;
i++;
}
}
zheng_can
2002-08-24
打赏
举报
回复
对于我的方法
只用取四次随机数就可以了
如果用 n5(先学好C++再说) 的方法
你能够保证计算的时间吗?
要是每次算出来的数都是一样的怎么办?
kingofvc
2002-08-24
打赏
举报
回复
对不起大小应为10
Truly
2002-08-24
打赏
举报
回复
不错的想法,能否给出代码?
kingofvc
2002-08-24
打赏
举报
回复
判断是否选择了没有的元素可以使用步长为1 大小为4的散列表
kingofvc
2002-08-24
打赏
举报
回复
for的条件是i<4 那么i++可以在选到合适的值时才执行
for(int i=0;i<4;)
{
if(选到了) i++;
}
Truly
2002-08-24
打赏
举报
回复
为什么没人回答啊?
Truly
2002-08-24
打赏
举报
回复
这种方法我也试了,可是重新取之后又有重复的可能,而如何在重取之后重新跳入检查的循环呢?
看我的程序应如何改进:
for(i=0;i<4;i++)
{
r[i]=rand()%10;
for(j=0;j<i;j++)
if(r[j]==r[i])
{
r[i]=rand()%10;
}
n5
2002-08-24
打赏
举报
回复
我的方法:如果发现取得的随机数与前面的有重复,重新取
Truly
2002-08-24
打赏
举报
回复
zheng_can(nothrow)你的算法太复杂了吧。海盗扔人没听说过,不过兔子选王倒是听说过。有没有简单点的?
Truly
2002-08-24
打赏
举报
回复
为什么大家都要误会我的意思呢,我明白用srand( (unsigned)time( NULL ) );来随机化种子,我困惑的是怎样使每次生成的四个数字都各不相同,比如3,2,1,9,而不会出现2,9,2,0。
zheng_can
2002-08-24
打赏
举报
回复
这么说吧:
你听过海盗扔人下海的故事吗?
可以用类似的方法,生成一个随机数 i,然后从 0 开始数,先数 i 步,如果当前这个数已经取过了,则继续判断相邻的那个数,直到碰到一个没被取过的数为止,取得该数
再从刚刚取得的数起,生成一个随机数 i,……………………
总共循环 4 次就可以了
foxmail
2002-08-24
打赏
举报
回复
int nArray[4];
srand((unsigned char)time(NULL));
//srand这个函数我记不大清,如果不对请看msdn
for(i=0;i<4;i++)
{
nArray[i]=rand()%10;
}
c语言实现赫夫曼编码
1. 将所有字符及其频率视为
一个
单独的节点,形成
一个
森林。 2. 找到频率最小的两个节点,将它们合并为
一个
新的节点,并且新节点的频率等于两个子节点频率之和。 3. 将新节点加入森林中,并重复步骤2,直到森林中只...
求教
一道关于求解最优化问题的编程问题~
总结起来,这个编程问题要求我们编写
一个
程序来解决
一个
带约束的最优化问题,利用拉格朗日乘子法构建Kuhn-Tucker条件,并通过牛顿法迭代求解。理解这些数学概念及其在编程中的应用是解决问题的关键。
文字点阵小例子自已刚学大家指点一下.
3. **编程**:使用编程语言如C、Python等,编写程序来生成、读取或修改点阵字符数据。 4. **字体设计**:学习如何设计美观且易识别的点阵字体,包括字符间的间距、高度、宽度等。 在你提供的压缩包文件“文字识别”...
vb-mschart查询Access数据
- **DataSet和DataTable**:在内存中存储数据,DataSet可以看作是数据库的
一个
快照,而DataTable则是DataSet的一部分,代表
一个
数据库表。 5. **VB代码示例**: ```vb Dim conn As New OleDbConnection(...
C语言错误c2224,新人C语言简单
求教
!第一次发帖望通过
最近在自学C语言,小白
求教
,大神勿喷以下是我做的
一个
书上例题的C语言
小程序
,利用结构体编写
一个
通讯录,输入姓名电话,然后输出这些信息。我做了一点改变,struct notebook man[n];,程序本来是struct notebook ...
C语言
70,020
社区成员
243,265
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章