#询问下为什么我这段程序不会生成随机数?题目和代码如下
#include
#include
#include
#include
int main()
{
int i,a[10]={0},val,j;
for(i=0;i<6;i++)
{
val=rand()%32+1;
while(a[i]!=val)
{
for(j=0;j<6;j++)
{
if(a[j]!=val)
{
a[i]=val;
}
else
{
val=rand()%32+1;
}
}
}
}
val=rand()%16+1;
a[6]=val;
for(i=0;i<7;i++)
{
printf("%d\t",a[i]);
}
}
你要在使用rand函数之前,先设置随机数种子才行
srand(time(NULL))
要用种子函数才行
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#include <time.h>
int main()
{
int i,a[10]={0},val,j;
srand(time(NULL));
for(i=0;i<6;i++)
{
val=rand()%32+1;
while(a[i]!=val)
{
for(j=0;j<6;j++)
{
if(a[j]!=val)
{
a[i]=val;
}
else
{
val=rand()%32+1;
}
}
}
}
val=rand()%16+1;
a[6]=val;
for(i=0;i<7;i++)
{
printf("%d\t",a[i]);
}
}
加上一个srand(当前时间)
c语言的随机数是伪随机数,每次返回的是相同的一个序列
为了看起来真的随机,那么就用当前时间作为种子,因为时间不停流逝,每次时间都不同,看起来就仿佛真的随机了一样