社区
C语言
帖子详情
求教一个c小程序。
Truly
2002-08-24 10:16:36
是这样一个问题,就是计算机事先生成4个0-9且不重复的随机序列,然后由用户来猜,如果位置和数字完全正确就是a,如果数字正确而位置不正确就是b,比如计算机抽出2,9,3,1,如果回答2,9,1,0,就输出2a1b。
一个文曲星上的游戏。
关键是求教怎样生成4个不重复的随机数。
...全文
59
18
打赏
收藏
求教一个c小程序。
是这样一个问题,就是计算机事先生成4个0-9且不重复的随机序列,然后由用户来猜,如果位置和数字完全正确就是a,如果数字正确而位置不正确就是b,比如计算机抽出2,9,3,1,如果回答2,9,1,0,就输出2a1b。 一个文曲星上的游戏。 关键是求教怎样生成4个不重复的随机数。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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语言实现赫夫曼编码
赫夫曼编码,树的实现方法,纯c 的实现,初学,请指教
求教
一道关于求解最优化问题的编程问题~
求教
一道关于求解最优化问题的编程问题~
文字点阵小例子自已刚学大家指点一下.
文字点阵小例子自已刚学大家指点一下.文字点阵小例子自已刚学大家指点一下.
vb-mschart查询Access数据
vb-mschart查询Access数据, 顺便
求教
。问题在里面。 noleic@foxmail.com 谢谢
C语言错误c2224,新人C语言简单
求教
!第一次发帖望通过
最近在自学C语言,小白
求教
,大神勿喷以下是我做的
一个
书上例题的C语言
小程序
,利用结构体编写
一个
通讯录,输入姓名电话,然后输出这些信息。我做了一点改变,struct notebook man[n];,程序本来是struct notebook man[NUM],(定义#define NUM 10).我想输入人数,来确定通讯录中的人数(例题中是10人)。这里是什么问题呢??
求教
!!!输出错误如下:D:\...
C语言
70,037
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章