怎样 在c语言中随机的输出1-53这几个数?
答案:5 悬赏:30 手机版
解决时间 2021-03-23 14:01
- 提问者网友:你独家记忆
- 2021-03-23 01:45
怎样 在c语言中随机的输出1-53这几个数?
最佳答案
- 五星知识达人网友:酒者煙囻
- 2021-03-23 02:37
需要对获取过的随机数保存记录,在每获取一个新的随机数时,先判断是否获取过。
如果获取过,那么抛弃;否则输出,并保存记录。
当全部数据均输出后结束程序。
代码如下:
int main()
{
int f[54]={0};
int n;
int i;
srand(time(NULL));
for(i = 0; i < 53; i ++)
{
n = rand()%53+1;
if(f[n])i--;
else
{
printf("%d,",n);
f[n] = 1;
}
}
}
如果获取过,那么抛弃;否则输出,并保存记录。
当全部数据均输出后结束程序。
代码如下:
int main()
{
int f[54]={0};
int n;
int i;
srand(time(NULL));
for(i = 0; i < 53; i ++)
{
n = rand()%53+1;
if(f[n])i--;
else
{
printf("%d,",n);
f[n] = 1;
}
}
}
全部回答
- 1楼网友:动情书生
- 2021-03-23 06:12
#include
#include
const int MAX = 20;
int main()
{
int elements[MAX];
int temp;
for( int i = 0; i < MAX; i++)
{
temp = rand()%54;
if( temp == 0)continue;
element[i] = rand()%54; //关键是取模
}
for( int i = 0; i < MAX; i++)
{
printf("%d ",elements[i];)
}
system("PAUSE");
return 0;
}
#include
const int MAX = 20;
int main()
{
int elements[MAX];
int temp;
for( int i = 0; i < MAX; i++)
{
temp = rand()%54;
if( temp == 0)continue;
element[i] = rand()%54; //关键是取模
}
for( int i = 0; i < MAX; i++)
{
printf("%d ",elements[i];)
}
system("PAUSE");
return 0;
}
- 2楼网友:西风乍起
- 2021-03-23 05:35
用标准库中的rand()和srand()两个函数,然后想得到哪个区间的随机数,只需再求余就行。建议种子用时间作为种子。
- 3楼网友:掌灯师
- 2021-03-23 04:54
用rand()函数即可啊.
- 4楼网友:轻雾山林
- 2021-03-23 03:41
(1) rand()函数:
原型: int rand(void)
功能: 产生从0到RAND_MAX(0x7fff)之间的随机数。
头文件: stdlib.h
例:
#include
#include
int main()
{
int k;
k = rand();
printf("%d\n", k);
return 0;
}
编译运行,发现他的确产生随机数了,但是,每次运行程序产生的随机数都是一样的,为什么呢?因为随机数取在C语言中采用的是固定序列,所以每次执行所取的是同一个数。那么如何写一个程序,让它每次运行时产生的随机数都不一样呢?往下看:
(2)srand()函数:
原型: void srand(unsigned seed)
功能: 产生随机数的起始发生数据,和rand函数配合使用
头文件: stdlib.h time.h
例:
#include
#include
#include
int main(void)
{
int i;
time_t t;
srand((unsigned) time(&t));
printf("Ten random numbers from 0 to 99\n\n");
for (i=0; i<10; i++)
printf("%d\n", rand()%100);
return 0;
}
这时运行程序,会发现每次产生的随机数都不一样。这是因为这里采用了时间作为种子,而时间在每时每刻都不相同,所以就产生了"随机"的随机数了。所以,要想产生不同的随机数,在使用rand之前需要先调用srand。这样做相当麻烦,有没一个更简单的函数呢?往下看:
(3)randomize()函数:
原型: int randomize(void)
功能: 通过time函数来得到一个随机数
头文件: stdlib.h time.h
该函数就相当于srand((unsign)(time(NULL)) 不过应注意的是randomize()的功能要通过time来实现所以在调用它时头文件要包含time.h。
(4)产生一个X到Y的随机数:
由于rand产生的随机数从0到rand_max,而rand_max是一个很大的数,那么如何产生从X~Y的数呢?
只要这样写:
k=rand()%(Y-X+1)+X;
这样,就可以产生你想要的任何范围内的随机数了。
原型: int rand(void)
功能: 产生从0到RAND_MAX(0x7fff)之间的随机数。
头文件: stdlib.h
例:
#include
#include
int main()
{
int k;
k = rand();
printf("%d\n", k);
return 0;
}
编译运行,发现他的确产生随机数了,但是,每次运行程序产生的随机数都是一样的,为什么呢?因为随机数取在C语言中采用的是固定序列,所以每次执行所取的是同一个数。那么如何写一个程序,让它每次运行时产生的随机数都不一样呢?往下看:
(2)srand()函数:
原型: void srand(unsigned seed)
功能: 产生随机数的起始发生数据,和rand函数配合使用
头文件: stdlib.h time.h
例:
#include
#include
#include
int main(void)
{
int i;
time_t t;
srand((unsigned) time(&t));
printf("Ten random numbers from 0 to 99\n\n");
for (i=0; i<10; i++)
printf("%d\n", rand()%100);
return 0;
}
这时运行程序,会发现每次产生的随机数都不一样。这是因为这里采用了时间作为种子,而时间在每时每刻都不相同,所以就产生了"随机"的随机数了。所以,要想产生不同的随机数,在使用rand之前需要先调用srand。这样做相当麻烦,有没一个更简单的函数呢?往下看:
(3)randomize()函数:
原型: int randomize(void)
功能: 通过time函数来得到一个随机数
头文件: stdlib.h time.h
该函数就相当于srand((unsign)(time(NULL)) 不过应注意的是randomize()的功能要通过time来实现所以在调用它时头文件要包含time.h。
(4)产生一个X到Y的随机数:
由于rand产生的随机数从0到rand_max,而rand_max是一个很大的数,那么如何产生从X~Y的数呢?
只要这样写:
k=rand()%(Y-X+1)+X;
这样,就可以产生你想要的任何范围内的随机数了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯