我的程序包含的代码每次执行时都应生成一个随机的正整数.它生成随机数但只生成一次.在那之后,当我执行相同的代码时,它给了我相同的值,并且它使我的代码无用.
我开始使用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)
| 归档时间: |
|
| 查看次数: |
143998 次 |
| 最近记录: |