每次使用后能否清除default_random_engine生成器?

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

1)预处理程序指令

#include <iostream>
#include <random>
#include <math.h>

2)创建一个函数以生成给定范围内的随机值a-> b

double RandomRealGenerator(double a, double b)
{
    std::default_random_engine generator;
    std::uniform_real_distribution<double> realDistribution(a, b);

    return realDistribution(generator);
}

3)使用上面生成的随机值作为元素来创建矩阵的函数

double arrays()
{
    // Declare a 3x3 matrix
    double MatrixA[3][3];

    // Give random values to each element in MatrixA
    MatrixA[0][0] = RandomRealGenerator(0, 1);  // element 1,1
    MatrixA[0][1] = RandomRealGenerator(0, 1);  // element 1,2
    MatrixA[0][2] = RandomRealGenerator(0, 1);  // element 1,3
    MatrixA[1][0] = RandomRealGenerator(0, 1);  // element 2,1
    MatrixA[1][1] = RandomRealGenerator(0, 1);  // element 2,2
    MatrixA[1][2] = RandomRealGenerator(0, 1);  // element 2,3
    MatrixA[2][0] = RandomRealGenerator(0, 1);  // element 3,1
    MatrixA[2][1] = RandomRealGenerator(0, 1);  // element 3,2
    MatrixA[2][2] = RandomRealGenerator(0, 1);  // element 3,3

    std::cout << MatrixA[0][0] << "  " << MatrixA[0][1] << "  " << MatrixA[0][2] << std::endl;
    std::cout << MatrixA[1][0] << "  " << MatrixA[1][1] << "  " << MatrixA[1][2] << std::endl;
    std::cout << MatrixA[2][0] << "  " << MatrixA[2][1] << "  " << MatrixA[2][2] << std::endl;
    std::cout << "\nIt's still not generating random doubles\n";
}

4)我不断得到所有元素都相同的矩阵

0.0850324  0.0850324  0.0850324
0.0850324  0.0850324  0.0850324
0.0850324  0.0850324  0.0850324

5)我不是计算机科学专业,我通常使用Python工作,因此,如果有一些简单的事情,我会完全忽略,如果有人至少可以将我指出正确的方向,我将不胜感激。谢谢。

更新

6)这可行,但是我仍然希望能够拥有一种快速功能,可以立即生成一个任意范围之间的随机数。我正在使用各种范围内的随机值来探索给定数学空间内的计算解决方案。我这样做是为了收集某些字符串模型中自由参数的有效值数据。再次感谢你的帮助。

// Declare a 3x3 matrix
double MatrixA[3][3];
std::default_random_engine generator;
std::uniform_real_distribution<double> realDistribution(0, 1);

// Give random values to each element in MatrixA
MatrixA[0][0] = realDistribution(generator);  // element 1,1
MatrixA[0][1] = realDistribution(generator);  // element 1,2
MatrixA[0][2] = realDistribution(generator);  // element 1,3
MatrixA[1][0] = realDistribution(generator);  // element 2,1
MatrixA[1][1] = realDistribution(generator);  // element 2,2
MatrixA[1][2] = realDistribution(generator);  // element 2,3
MatrixA[2][0] = realDistribution(generator);  // element 3,1
MatrixA[2][1] = realDistribution(generator);  // element 3,2
MatrixA[2][2] = realDistribution(generator);  // element 3,3
c++ matrix random clion
1个回答
0
投票

std::default_random_engine是实现定义的。取决于C ++标准库:

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