| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3197 人关注过本帖
标题:随即产生一个10位数,并且用到0--9不重复
只看楼主 加入收藏
lhszwyg
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-3-29
结帖率:100%
收藏
 问题点数:0 回复次数:33 
随即产生一个10位数,并且用到0--9不重复
随即产生一个10位数,并且用到0--9不重复,就是说0--9每次都全部用到?如何写,请路过的高手出手相助?
搜索更多相关主题的帖子: 位数 
2006-03-29 21:45
shensheng4
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2005-8-7
收藏
得分:0 
#include <stdlib.h>
/*产生由0到9组成的数字串*/
void main()
{
int i,j;
int a[10]={-1};
/*首数字不能为0*/
a[0]=rand()%9+1;
i=1;
while(i<10)
{
a[i]=rand()%10;
j=0;
/*后面的数字不能和前面的数字相同*/
while(j<i)
{
if(a[i]==a[j])
break;
j++;
}
/*如果相同则重新给这位赋值*/
if(j<i)
continue;
i++;
}
for(i=0;i<10;i++)
printf("%3d",a[i]);
getch();
}

梦想是不可能实现的,正因为如此才值得我们去追寻。 这是我选择的路,即使付出一切,我也毫无怨言。
2006-03-29 22:07
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

楼上的有几个小问题:1 种子没有初始化,所以每次产生的随即10位数相同
2 既然是10位数,那就不是数组,输出时没必要加空格

[CODE]
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
void main()
{
int i,j;
int a[10]={0};

randomize(); /*初始化种子*/
a[0]=rand()%9+1;
for(i=1;i<10;i++)
{
a[i]=rand()%10;
for(j=0;j<i;j++)
if(a[i]==a[j])
break;
if(j<i)
i--;
}
for(i=0;i<10;i++)
printf("%d",a[i]);
getch();
}

[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-30 00:58
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
二楼和三楼的方法都可行,不过算法复杂度都比较高,就是说,每新生成一个数之后,就要跟所有已经存在的数比较是否重复,如果始终重复,程序就始终结束不了,只有10个数时还可以,随着需要输入的数的增加重复率会越来越高,最后几乎无法完成。
为保持运行时间,应该建立链表(link list),把0~最大值中的所有数顺序放进去,每用掉一个就从list中删一个,下次rand()的时候上限减1,这样可以保证复杂度是O(N)。

http://myajax95./
2006-03-30 05:29
xdwqxj
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-4
收藏
得分:0 
我就纳闷了,你们为什么全都写getch()啊,我都是用getchar()的,你们都用的什么软件啊,我用的c-free是不是不好用啊。谢谢了。
2006-04-04 21:27
xdwqxj
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-4
收藏
得分:0 
为什么每次运行这个程序时这十个数都会是同一个次序排列呢,
2006-04-04 21:32
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
为什么?看三楼

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-04 21:38
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
4楼说得不错

淘宝杜琨
2006-04-04 21:41
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
其实还有很多算法的,因为这题就和 有10个岛,要求旅游团一次性走完这10个岛屿而且不能经过已经观光过的岛屿的算法是一样的,我在图书馆看到一本介绍离散数学的书里面有~~遗憾的是。。我忘记名称了...

淘宝杜琨
2006-04-04 21:44
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
另外。更正下4楼的,如果把随即数的产生所需要的时间也算进去,那么就不是O(N)那么简单的事情了

淘宝杜琨
2006-04-04 21:45
快速回复:随即产生一个10位数,并且用到0--9不重复
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020179 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved