当我多次运行程序(在C中)时,它总是选择相同的随机数

ryan123

因此,我的程序实际上是DPLL SAT求解器,因此在程序内部需要选择随机变量以将TRUE或FALSE分配给它。如果我运行一次程序,它将正常工作;如果再次运行,它将选择不同的变量,并且仍然有效(这是我想要的)。

但是,为了进行可靠的实验,我需要重复运行程序。可以通过分别多次运行该程序来完成此操作,但这很繁琐并且会花费很长时间。我已经学会了如何使用bash,如下所示:

#!/bin/bash 

for ((i=50; i>0; i--))  
do  
./Project 90 10 >> outfile.txt 
done

但是,完成此操作后,每次运行都会以相同的顺序选择相同的“随机”变量,因此会产生相同的结果。如何使我的程序每次都以不同的方式运行?

谢谢!!

伊哈罗布·阿西米(Iharob Al Asimi)

您需要初始化随机数种子,随机数不是真正的随机数,请将其添加到您的 main()

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

int main(int argc, char **argv)
{
    srand(time(NULL)); /* here at the very beginnig of main */
    .
    .
    .
    return 0;
}

每次执行程序时,这都会产生不同的种子,因为time(NULL)它将返回不同的值。

阅读以获得更多信息。

注意:如Ingo Leonhardt所评论,效果将是相同的,因此请尝试此选项

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

int main(int argc, char **argv)
{
    struct timeval tv;
    gettimeofday(&tv, NULL);

    srand(tv.tv_usec); /* here at the very beginnig of main */
    .
    .
    .
    return 0;
}

或者,因为每个过程都会有所不同,所以pid这也可能有效1

#include <stdlib.h>
#include <unistd.h>

int main(int argc, char **argv)
{
    srand((int)getpid()); /* here at the very beginnig of main */
    .
    .
    .
    return 0;
}

1这是POSIX解决方案,如果需要,可以研究不支持POSIX的操作系统的等效功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C中的复数程序,当我运行程序时,复数词后面有一堆随机的东西

来自分类Dev

在python中,当我尝试选择随机数时,如何确保使用randint的种子不断变化?

来自分类Dev

我的随机数生成器总是得到相同的数字?(C++)

来自分类Dev

当我运行程序时,结果相同

来自分类Dev

当我在脚本中运行程序时,为什么rand()返回相同的值?

来自分类Dev

当我在脚本中运行程序时,为什么rand()返回相同的值?

来自分类Dev

每当我发送味精时,它都会在反应中多次显示相同的消息

来自分类Dev

为什么有时当我在终端中运行程序时,却无法在终端中运行?

来自分类Dev

为什么我的递归函数总是使用相同的随机数?

来自分类Dev

当我在真实设备 iOS 中运行它时应用程序崩溃

来自分类Dev

当我在模拟器中运行它时,应用程序不断崩溃

来自分类Dev

每当我在 Python Shell 中运行程序时,我都会收到一行 RESTART: C:\... $

来自分类Dev

在并行程序中播种随机数生成器

来自分类Dev

当我运行 springboot 应用程序时,它总是从错误的路径加载属性

来自分类Dev

我想创建一个C ++程序以将随机数生成到文件中

来自分类Dev

C程序中的随机数生成器未生成正确的随机数

来自分类Dev

如何在python中生成新的随机数,而无需再次运行程序或添加新变量?

来自分类Dev

不在循环中多次生成相同的随机数

来自分类Dev

在numpy中绘制相同的随机数

来自分类Dev

C ++随机数始终相同

来自分类Dev

为什么我的随机数总是一样?

来自分类Dev

当我在 Java 中运行程序时,它在控制台中打印 null

来自分类Dev

一个c程序在Ubuntu中运行良好,但是当我使用MinGW在Windows中编译并运行它时,该程序运行了,但是结果却显示出一些垃圾值

来自分类Dev

选择系列中的随机数(python)

来自分类Dev

在C#中选择随机数

来自分类Dev

当我运行它时,BeautifulSoup返回[]

来自分类Dev

生成随机数的C程序

来自分类Dev

如何在GDB中多次重新运行程序?

来自分类Dev

如何在GDB中多次重新运行程序?

Related 相关文章

  1. 1

    C中的复数程序,当我运行程序时,复数词后面有一堆随机的东西

  2. 2

    在python中,当我尝试选择随机数时,如何确保使用randint的种子不断变化?

  3. 3

    我的随机数生成器总是得到相同的数字?(C++)

  4. 4

    当我运行程序时,结果相同

  5. 5

    当我在脚本中运行程序时,为什么rand()返回相同的值?

  6. 6

    当我在脚本中运行程序时,为什么rand()返回相同的值?

  7. 7

    每当我发送味精时,它都会在反应中多次显示相同的消息

  8. 8

    为什么有时当我在终端中运行程序时,却无法在终端中运行?

  9. 9

    为什么我的递归函数总是使用相同的随机数?

  10. 10

    当我在真实设备 iOS 中运行它时应用程序崩溃

  11. 11

    当我在模拟器中运行它时,应用程序不断崩溃

  12. 12

    每当我在 Python Shell 中运行程序时,我都会收到一行 RESTART: C:\... $

  13. 13

    在并行程序中播种随机数生成器

  14. 14

    当我运行 springboot 应用程序时,它总是从错误的路径加载属性

  15. 15

    我想创建一个C ++程序以将随机数生成到文件中

  16. 16

    C程序中的随机数生成器未生成正确的随机数

  17. 17

    如何在python中生成新的随机数,而无需再次运行程序或添加新变量?

  18. 18

    不在循环中多次生成相同的随机数

  19. 19

    在numpy中绘制相同的随机数

  20. 20

    C ++随机数始终相同

  21. 21

    为什么我的随机数总是一样?

  22. 22

    当我在 Java 中运行程序时,它在控制台中打印 null

  23. 23

    一个c程序在Ubuntu中运行良好,但是当我使用MinGW在Windows中编译并运行它时,该程序运行了,但是结果却显示出一些垃圾值

  24. 24

    选择系列中的随机数(python)

  25. 25

    在C#中选择随机数

  26. 26

    当我运行它时,BeautifulSoup返回[]

  27. 27

    生成随机数的C程序

  28. 28

    如何在GDB中多次重新运行程序?

  29. 29

    如何在GDB中多次重新运行程序?

热门标签

归档