【问题标题】:making random values in one function be same for each run while random values in another function be different for each run使一个函数中的随机值对于每次运行都相同,而另一个函数中的随机值对于每次运行都不同
【发布时间】:2020-10-17 03:19:33
【问题描述】:

我搜索了网络,它显示了用于为每次运行生成新随机值的 srand() 方法,而我使用简单的 rand() 方法在每次运行中生成相同的随机数,但我希望这两个功能都在节目中不同的地方。
这是我尝试过的:

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

void first()
{ 
    printf("these random values should be same for every run\n");
    for(int i = 0; i<4; i++)
        printf(" %d ", rand()%4);
    printf("\n");

} 
void second()
{ 
    srand(time(0));

    printf("these random values should be different for every run\n");
    for(int i = 0; i<4; i++)
        printf(" %d ", rand()%4);
    printf("\n");
} 

int main(void)
{


    first();
    second();
    return 0;
}

请帮忙。

【问题讨论】:

  • 你有什么问题或问题,代码似乎对我有用
  • srand 采用种子值,将其硬编码为第一个函数中的某个特定值,并在第二个函数中使用 time 函数。
  • @Ôrel 抱歉,我没有正确检查
  • @Ôrel 它正在按我的意愿工作。

标签: c random random-seed time.h


【解决方案1】:

新的随机值, ... 每次运行的随机数相同...

可以在两者中使用srand(),只需在一个中使用constant 种子:

void first(void)
{ 
    srand(3);//use constant argument for _same_ random values
    printf("these random values should be same for every run\n");
    for(int i = 0; i<4; i++)
        printf(" %d ", rand()%4);
    printf("\n");

} 
void second(void)
{ 
    srand(time(0));//use variable argument for _new_ random values

    printf("these random values should be different for every run\n");
    for(int i = 0; i<4; i++)
        printf(" %d ", rand()%4);
    printf("\n");
} 

【讨论】:

    猜你喜欢
    • 2011-12-06
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多