【问题标题】:Seeding srand() once yet rand() gives almost indentical results everytime播种 srand() 一次 rand() 每次都给出几乎相同的结果
【发布时间】:2021-03-11 16:16:34
【问题描述】:

我正在尝试用 C 语言为扫雷游戏创建一个随机整数数组。

我正在尝试获取 1 到 64 之间的随机数。

main() 函数的开头,我初始化了srand(time(NULL))。 稍后在程序中,我在循环中使用rand() 生成8 个随机整数。 在我对其他功能的初始测试运行中,数字是完全随机的,但随着我运行更多测试,它开始连续给出整数 1-7 和一个随机两位数整数。 值得一提的是,这些测试是在 Clion 终端上完成的。 仅仅是因为我运行程序的位置还是其他原因造成的问题?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void eightByEight(int randArr[], int lower, int upper, int size);

int main() 
{
    int i, randNums[8];
    srand(time(NULL));
    eightByEight(randNums,1,64,8);
    for (i = 0; i < 8; i++)
    {
        printf("%d ", randNums[i]);
    }
    return 0;
}

void eightByEight(int randArr[], int lower, int upper, int size)
{
    int i,num;
    for (i = 0; i < size; i++) 
    {
         num = (rand() % (upper - lower + 1)) + lower;
         randArr[i] = num;
    }

} 

【问题讨论】:

标签: c clion


【解决方案1】:

time 函数为您提供自纪元以来的当前时间(以秒为单位)。如果您在短时间内运行该程序两次,time 函数将在两次运行中返回相同的值,因此您将获得相同的随机值序列。

【讨论】:

  • 不确定它是否算作短时间,但我在几个小时或一天之间运行了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
相关资源
最近更新 更多