C语言中生成随机数问题

#询问下为什么我这段程序不会生成随机数?题目和代码如下

img

#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语言的随机数是伪随机数,每次返回的是相同的一个序列
为了看起来真的随机,那么就用当前时间作为种子,因为时间不停流逝,每次时间都不同,看起来就仿佛真的随机了一样