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

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(使用前将#替换为@)

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

  • Qt 和 Sqlite 示例

    我正在寻找一些使用 Qt 的示例代码 它是带有 Sqlite 驱动程序的 SQL 模块 我需要示例的主要原因是我之前有 Qt 数据库接口的经验 并且 Sqlite 在字段类型方面有一些奇怪的行为 类型是按字段存储的 而不是按列存储的 The
  • -ffast-math 可以安全地用于典型项目吗?

    在回答我建议的问题时 ffast math 有评论指出这是危险的 我个人的感觉是 在科学计算之外 是可以的 我还假设严肃的金融应用程序使用定点而不是浮点 当然 如果你想在你的项目中使用它 最终的答案是在你的项目上测试它 看看它有多大影响 但
  • 地图类容器的专用功能

    我想要专门为矢量和地图之类的容器设计一个函数模板 对于向量 我可以像下面那样做 但我不知道如何才能有一个专门版本的函数 该函数仅用于像地图这样的容器 include
  • 如何在 ASP.NET MVC 中处理会话数据

    假设我想存储一个名为language id在会议中 我想我也许可以做如下的事情 public class CountryController Controller WebMethod EnableSession true AcceptVer
  • 二叉树和快速排序?

    我有一个家庭作业 内容如下 别生气 担心 我是not请你帮我做作业 编写一个程序 通过使用二分查找的快速排序方法对一组数字进行排序 树 推荐的实现是使用递归算法 这是什么意思 到目前为止 这是我的解释 正如我在下面解释的那样 我认为两者都有
  • 以编程方式更新 Wifi 网络

    我正在尝试创建一个程序 当某个 wifi 网络在范围内时 该程序会连接到该网络 即使已经连接到另一个 wifi 也是如此 我在用着简单Wifi https github com DigiExam simplewifi 基本上效果很好 除了在
  • MVC BaseController 处理 CRUD 操作

    我想重构我的基本 CRUD 操作 因为它们非常重复 但我不确定最好的方法 我的所有控制器都继承 BaseController 如下所示 public class BaseController
  • R 包与 Rcpp 的链接错误:“未定义符号:LAPACKE_dgels”

    我正在创建一个 R 包 lapacker 以使用 R API 头文件 R ext Lapack h 为 R 提供和使用的内部 LAPACK 库 仅具有双精度和双复数 提供 C 接口 源代码 https github com ypan1988
  • .Net 支持柯里化泛型吗?

    假设我们有一个嵌套的泛型类 public class A
  • 在 C++ 中,为什么 const 也可以工作时编译器选择非常量函数? [复制]

    这个问题在这里已经有答案了 例如 假设我有一堂课 class Foo public std string Name m maybe modified true return m name const std string Name cons
  • 我想找到 C# 代码中所有后面没有括号的 if 语句。通过正则表达式

    我想找到所有if声明和for后面没有大括号的语句 当你在一个文件中写入一行时if声明您大多不会将其括在大括号中 所以我想找到所有这些if and for声明 请帮忙 就像我想捕捉这个声明 if childNode Name B return
  • 将 JavaScript 引擎嵌入到 .NET 中 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 只是想知道是否有人尝试过将任何 js 引擎嵌入并实际集成到 net 环境中 我可以找到并实际使用 经过L
  • 绑定集合的子集

    我有一个ObservableCollection
  • 大小为 k 的非连续子序列的最大值的最小值

    在开始之前 我希望这个问题不是重复的 我发现了几个类似的问题 但它们似乎都没有描述完全相同的问题 但如果它是重复的 我会很高兴看到一个解决方案 即使它与我的算法不同 我一直在尝试回答这个问题 https stackoverflow com
  • Qt 多重继承和信号

    由于 QObject 我在 QT 中遇到了有关多重继承的问题 我知道很多人也有同样的问题 但我不知道该如何解决 class NavigatableItem public QObject Q OBJECT signals void desel
  • 对列表中的一系列整数求和

    假设我有一个这样的列表 List
  • 如何处理文件名中的空格

    我正在尝试迭代本地目录中的文件 foreach string name in Directory GetFileSystemEntries path FileAttrtibutes att File GetAttributes name 文
  • 模板类中模板方法专门化的 clang 自动返回类型错误?

    试图理解另一个问题 https stackoverflow com questions 38054055 clang fails to compile template function with auto return type insi
  • TCP/IP 传输期间套接字数据损坏

    当我通过预连接的 TCP IP 套接字发送数据时 我发现数据已损坏 Example Station1 正在向 Station2 发送数据 我已经在发送之前 在 S1 和接收之后 在 S2 打印了数据 以下是消息 S1 发送的数据是ACKS2
  • asio::this_coro::executor 的实现是什么

    在协程函数中 我们可以添加auto ex co await asio this coro executor 获取该协程的执行者 但当我想了解它的定义时 我发现了这个 Awaitable type that returns the execu

随机推荐

  • 如何在 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