怎么样用C语言产生指定位数的一个整数

mwmao861220 2009-05-22 03:49:54
怎么样让系统随机产生一个指定位数的数,比如说随机产生一个四位数,能解释下为什么产生的会是四位数就最好了
...全文
391 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
xladykiller 2009-05-22
  • 打赏
  • 举报
回复
好像没有random这个函数。。。。。
srand( (unsigned)time(NULL)); //生成种子

r = rand()%10000;
mwmao861220 2009-05-22
  • 打赏
  • 举报
回复
谢谢大家了!
wmy0011 2009-05-22
  • 打赏
  • 举报
回复
不大好吧,你们都用了RAND(),这个........
貌似自己搞个函数实现更好啊....
wuchenghao19891 2009-05-22
  • 打赏
  • 举报
回复
const int number = 4;
int sum = 0, k = 0;
for (i = 0; i < number; i++)
{
k = rand()%10;
sum = sum * 10 + k;
}
Steven_0610 2009-05-22
  • 打赏
  • 举报
回复
#include<stdio.h>
void main()
{
int i,n=0;
int l=0,num=0;
int a[5]={1,2,3,4,5};
int b[5]={3,4,5,6,7};
for(i=0;i<10;i++){
if(a[i]==b[n]){
num++;

}

if(i==4&&l<25){
n++;
i=-1;
}
l++;


}
printf("The same is %d",num-1);



}
sentball 2009-05-22
  • 打赏
  • 举报
回复
16楼正解,只要%就可以实现了
zslxzlyf 2009-05-22
  • 打赏
  • 举报
回复
楼上这个貌似不错
lhy 2009-05-22
  • 打赏
  • 举报
回复
n=(rand()%9000)+1000
noliper 2009-05-22
  • 打赏
  • 举报
回复
linux srand man page:

"If you want to generate a random integer between 1 and 10, you should always do it by using high-order bits, as in

j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));

and never by anything resembling

j = 1 + (rand() % 10);

(which uses lower-order bits)."
liao05050075 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zsjsgyy 的回复:]
n=(rand()+1000)%10000
[/Quote]

这个明显错了。
如果rand()出来9000的话,那么最后n=0
linren 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tianqin625 的回复:]
引用 10 楼 zsjsgyy 的回复:
n=(rand()+1000)%10000


这个方法貌似很简单。支持一下
[/Quote]

这个式子多试几次就会发现(比如循环100次)
有时出现的不是4位数
tianqin625 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zsjsgyy 的回复:]
n=(rand()+1000)%10000
[/Quote]

这个方法貌似很简单。支持一下
linren 2009-05-22
  • 打赏
  • 举报
回复
linux下的那个程序用VC编译也是可以的
但是用VC编译不了TC2.0的那个
zsjsgyy 2009-05-22
  • 打赏
  • 举报
回复
n=(rand()+1000)%10000
linren 2009-05-22
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int myrandom(int x)
{
int i,y=1,z=1;
for(i=0;i<x-1;i++) y*=10;
z=y*10-1;
return y+(int)((float)(z-y)*rand()/(RAND_MAX));
}

int main()
{
int a;
a=myrandom(4);
printf("%d\n",a);
return 0;
}


上面是linux下的C程序
linren 2009-05-22
  • 打赏
  • 举报
回复
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int myrandom(int x)
{
int i,y=1,z=1;
randomize();
for(i=0;i<x-1;i++) y*=10;
z=y*10-1;
return y+random(z-y);
}

void main()
{
int a;
a=myrandom(4);
printf("%d\n",a);
}


上面是TC2.0的代码
pope_key 2009-05-22
  • 打赏
  • 举报
回复
同时产生四位随机数
r1*1000 + r2 *100 + r2 *10 + r1
liao05050075 2009-05-22
  • 打赏
  • 举报
回复

int n;
while(1)
{
n=rand();
if(n>999&&n<10000) break;
}
mwmao861220 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyu637 的回复:]
直接指定好像没有。
可以自己改写一个。


int number = 4;
int sum = 0;
for (i = 0;i <number;i++)
{
int k = random()%10;
sum = sum * 10 +k;

}
[/Quote]
这个可以,有没有更简单点的呢?谢谢了
wind_lin1325 2009-05-22
  • 打赏
  • 举报
回复
學習
加载更多回复(3)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧