温馨提示:本文翻译自stackoverflow.com,查看原文请点击:c - Why do I always get the same sequence of random numbers with rand()?
c random

c - 为什么我总是用rand()获得相同的随机数序列?

发布于 2020-04-11 00:07:21

这是我第一次使用C尝试随机数(我想念C#)。这是我的代码:

int i, j = 0;
for(i = 0; i <= 10; i++) {
    j = rand();
    printf("j = %d\n", j);
}

有了这段代码,我每次运行代码都会得到相同的顺序。但是如果我srand(/*somevalue/*)for循环之前添加它将生成不同的随机序列谁能解释为什么?

查看更多

提问者
Hannoun Yassir
被浏览
38
4,312 2018-09-22 16:57

您必须播种。随时间播种是个好主意:

srand()

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

int main ()
{
  srand ( time(NULL) );
  printf ("Random Number: %d\n", rand() %100);
  return 0;
}

您会得到相同的序列,因为rand()如果不调用,则会自动以1的值作为种子srand()

编辑

由于评论

rand()将返回0到RAND_MAX(在标准库中定义)之间的数字使用运算符(%)给出除法的余数rand() / 100这将强制随机数在0-99范围内。例如,要获取0-999范围内的随机数,我们将应用rand() % 1000