如何在time.h中使用函数srand()?

Đēē*_*pak 11 c random srand

我的程序包含的代码每次执行时都应生成一个随机的正整数.它生成随机数但只生成一次.在那之后,当我执行相同的代码时,它给了我相同的值,并且它使我的代码无用.

我开始使用rand函数,然后我将srand()函数与time.h头文件一起使用,但它仍然无法正常工作.

#define size 10
for(i=0;i<size;i++)
    Arr[i] = rand()%size;
Run Code Online (Sandbox Code Playgroud)

第一次通话(随机):

6 0 2 0 6 7 5 5 8 6
Run Code Online (Sandbox Code Playgroud)

第二次通话(随机但与之前相同):

6 0 2 0 6 7 5 5 8 6
Run Code Online (Sandbox Code Playgroud)

后来我访问了Stack Overflow问题并阅读了srand()函数,并将其用作:

#include<time.h>
for(i=0;i<size;i++)
    Arr[i] = srand(time(NULL));
Run Code Online (Sandbox Code Playgroud)

第一个电话:

-10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327
Run Code Online (Sandbox Code Playgroud)

第二个电话:

-10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326
Run Code Online (Sandbox Code Playgroud)

它给了我不同的(但不是随机的值).我已经将Arr [i]定义为unsigned int,但我仍然得到负值.

Pau*_*l R 37

你需要调用srand() 一次,随机化种子,然后调用rand()你的循环:

#include <stdlib.h>
#include <time.h>

#define size 10

srand(time(NULL)); // randomize seed

for(i=0;i<size;i++)
    Arr[i] = rand()%size;
Run Code Online (Sandbox Code Playgroud)