作为随机数生成器的竞争条件

2023-12-24

我通过“pthread.h”模拟了 C++ 中线程之间的竞争条件 运行它时,它在“随机”循环迭代中出错。

我可以将它用作随机数生成器吗? 为什么?

#include<cstdio>
#include<thread>

static int counter = 0;

void increase() {
        register int i = counter;
        i++;
        counter = i;
}
void decrease() {
        register int i = counter;
        i--;
        counter = i;
}
int main() {
    std::thread *p1, *p2;
    register int i = 0;
    while (1) {
        i++;
        counter = 0;
        p1 = new std::thread(increase);
        p2 = new std::thread(decrease);
        p1->join();
        p2->join();
        delete p1;
        delete p2;
        if (counter) {
            std::fprintf(stderr, "Error at loop %d\n", i);
            std::exit(1);
        }
    }
    std::exit(0);
}

我可以将它用作随机数生成器吗?

你真的不应该将它用作随机数。

why?

你不应该这样做,因为竞争条件是未定义的行为。

这个“随机”数字没有很好的熵,因为它取决于时间。

有更好的方法来生成随机数#include <random>.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

作为随机数生成器的竞争条件 的相关文章

随机推荐

  • 如何在 R 中为数据框着色

    我有以下类型的数据框 gt df V1 V2 V3 V4 V5 1 10 603 3 100 2 1 5 1 2 10 603 3 101 3 2 4 5 3 10 603 3 102 1 3 3 2 4 10 603 1 103 4 4
  • .NET 中是否存在与 UI 无关的 Point 结构?

    我认识几个Point NET 中的结构 System Drawing Point System Windows Point Sys UI Point 但它们都位于高级 UI 库 GDI WPF AJAX 中 我需要一个Point我不想将其与
  • CUDA/OpenCL 中的现实死锁示例

    对于我正在编写的教程 我正在寻找一个 现实 且简单的示例 说明由于不了解 SIMT SIMD 而导致的死锁 我想出了这个片段 这似乎是一个很好的例子 任何意见将不胜感激 int x threadID 2 if threadID gt x v
  • Python 中是否有已经制作好的字母表? [复制]

    这个问题在这里已经有答案了 我需要创建随机单词 名称random choice alphabet 对于我在 repl 中的许多游戏来说 但输入它并制作大写版本 仅辅音 元音等是很痛苦的 有没有一种内置的或可导入的方法来获取 python 中
  • 让 Bootstrap datetimepicker 在 ajax 加载后工作

    我有这个简单的脚本 可以正常形式工作 但是 如果我通过 ajax 将表单加载到 Bootstrap 3 模式中 时间和日期选择器不起作用 我知道问题是因为我通过 ajax 加载表单 那么如何为新加载的a
  • 简单的 Java 扫描器代码不起作用[重复]

    这个问题已经存在了 这是我为制作一个简单游戏而编写的一些基本代码的框架 Scanner in new Scanner System in String name String playing int age do System out pr
  • 如何从 iPhone 中的资源文件夹中获取文件夹和文件列表?

    我正在资源文件夹中执行文件夹结构 例如 Resource gt MyData gt S1 然后在S1 gt Name png data ppt 现在我想获取所有文件夹列表和文件名 这里 MyData 名称只是静态的 其他名称可能会更改 就像
  • 如何使用baseadapter将获取的json数据显示到listview中

    我是 android 和 java 的新手 最近我在使用 baseadapter 将获取的 json 数据显示到 listview 时遇到问题 起初我用过这段代码 Override protected void onCreate Bundl
  • 干净地绑定/取消绑定到应用程序中的服务

    我有一个绑定到持久服务的 Android 应用程序 一旦启动startService 该服务是应用程序的一个组成部分 因此几乎在每个 Activity 中都会使用该服务 因此 我只想绑定到服务一次 而不是在每个活动中绑定 取消绑定 并在应用
  • jQuery 中有没有类似 except 的东西?

    这怎么可能 以下构建不起作用 multibutton click function event some stuff before this next menu slideDown slow hide all other menus exc
  • Java Server Faces 2.0 的主要缺点是什么?

    昨天 我看到了有关 Java Server Faces 2 0 的演示 尽管我目前是一名快乐的 ASP NET MVC jQuery 开发人员 但它看起来确实令人印象深刻 我最喜欢 JSF 的是大量支持 AJAX 的 UI 组件 这似乎使开
  • 使用Jquery ajax json响应?

    有一个 ajax 请求 如下所示 ajax url users action type POST data myData context this error function success function this removeCla
  • 在多台计算机中同步 VirtualEnv

    我最近购买了一台新笔记本电脑 因此我不仅可以在工作站上工作 我有一个 Django REST 应用程序 对于这个项目 我使用 VirtualEnv 我的问题是 如何 同步 virtualenv 来安装新的依赖包 在我的工作站中 我安装了 D
  • HLS 元数据 ID3 标记不起作用

    我在 TableView 中有一个音频 URL 列表 所以每次我点击每个单元格时didSelectRowAt这个方法将被调用 func tableView tableView UITableView didSelectRowAt index
  • p:keyFilter 在 Firefox 中未按预期工作

    我可以为 p 输入文本输入数字和特殊字符 如何限制只能接受数字的字段 在所有浏览器中
  • 哪种方式更好?将媒体文件作为字节数组还是字符串保存到 MongoDB?

    我将媒体文件 图片 PDF 等 作为字节数组保存在 MongoDB 中 我看到人们通过将字节数组编码和解码为字符串来保存它的示例 有什么不同 也许性能上有区别 那么哪种方式更好呢 我注意到 当文件保存为字节数组时 Mongo Managem
  • 在linux中生成鼠标、按键...等事件

    我在一个项目中 需要编写一个简单的驱动程序 该驱动程序接受来自 USB 设备的输入 并根据收到的消息在 GUI 上执行操作 就像编写 USB 鼠标驱动程序 但使用我自己的协议 我正在寻找这种可能性 我发现像 LDTP 这样的软件测试自动化工
  • 在 Linux shell 脚本中处理输入确认

    我正在编写一个 Linux Shell 脚本来自动化我在 Ubuntu 11 04 上做的一些事情 基本上 我正在编写一个 shell 脚本来安装 NGINX MySQL 和 PHP 然后配置所有内容 我知道如何通过命令行完成所有操作 但是
  • 如何在 AWS Managed Workflows for Apache Airflow 中启用 API?

    我正在试水跑步阿帕奇气流 https airflow apache org 在 AWS 上通过Apache Airflow 的托管工作流程 https aws amazon com managed workflows for apache
  • 作为随机数生成器的竞争条件

    我通过 pthread h 模拟了 C 中线程之间的竞争条件 运行它时 它在 随机 循环迭代中出错 我可以将它用作随机数生成器吗 为什么 include