使用 std::mt19937 和 std::uniform_int_distribution 生成范围内的随机数会导致应用程序崩溃并显示错误代码(0xc000007b)[重复]

问题描述 投票:0回答:1

我有一个简单的 cpp 程序,可以生成给定范围之间的随机数[下面的代码]

代码参考:https://www.geeksforgeeks.org/how-to-generate-random-number-in-range-in-cpp/

#include <iostream>
#include <random>

int main()
{
    const int range_from  = 1;
    const int range_to    = 4;
    std::random_device                  rand_dev;
    std::mt19937                        generator(rand_dev());
    std::uniform_int_distribution<int>  distr(range_from, range_to);

    for(int i=0;i<10;i++)
        std::cout << distr(generator) << '\n';
    return 0;
}

我这样编译程序:

g++ gen_random.cpp

此后,当我执行程序时,应用程序崩溃并显示错误代码:(0xc000007b)

使用的

g++版本->

g++(海湾合作委员会)14.2.0

观察到错误[下图]:

error

c++ c++14
1个回答
0
投票

C++ 中的随机数生成器(修复错误 0xc000007b)

该程序使用 C++ 中的

<random>
库生成给定范围内的随机数。如果您在运行时遇到 0xc000007b 错误,请不要担心 - 这里有一个明确的修复方法。


问题

编译后:

g++ gen_random.cpp

程序崩溃:

The application was unable to start correctly (0xc000007b).

此错误通常是由于架构不匹配(例如混合 32 位和 64 位二进制文件)或缺少运行时库而发生。


解决方案

请按照以下步骤解决问题:

1.修复编译命令

确保根据您的系统编译正确的架构:

  • 对于 64 位系统,请使用:

    g++ -m64 -o gen_random gen_random.cpp
    
  • 对于 32 位系统,请使用:

    g++ -m32 -o gen_random gen_random.cpp
    

此外,添加 C++ 标准标志以确保与

<random>
的兼容性:

g++ -std=c++11 -o gen_random gen_random.cpp

2.安装所需的库

  • 对于 Windows,安装 Microsoft Visual C++ Redistributable(与您的系统架构相匹配)。
  • 如果您使用MinGWMinGW-w64,请确保所有运行时库均已正确安装。

3.正确的代码

这是干净且有效的代码:

#include <iostream>
#include <random>
using namespace std;

int main()
{
    const int range_from = 1; // Lower range
    const int range_to = 4;   // Upper range

    // Initialize the random number generator
    random_device rand_dev;
    mt19937 generator(rand_dev());
    uniform_int_distribution<int> distr(range_from, range_to);

    // Generate 10 random numbers
    for (int i = 0; i < 10; i++)
        cout << distr(generator) << '\n';

    return 0;
}

4.运行程序

修复所有内容后,编译并运行:

g++ -std=c++11 -m64 -o gen_random gen_random.cpp
./gen_random

期待什么

程序会输出 1 到 4 之间的 10 个随机数,例如:

2
3
1
4
4
2
3
1
...

为什么这有效

  1. -m64
    -m32
    确保二进制文件与您的系统架构匹配。
  2. 添加
    -std=c++11
    保证
    <random>
    支持。
  3. 安装缺失的库可以修复运行时问题。

如果您按照这些步骤操作,0xc000007b错误将会消失,并且您的随机数生成器将完美工作。 🎉

© www.soinside.com 2019 - 2024. All rights reserved.