随机不工作 C 中的计数时间

random not working + counting time in C++

本文关键字:时间 工作 随机      更新时间:2023-10-16

运行下面的代码时,我会收到以下错误。您能否向我解释为什么以及我应该做什么?我在网上选择了相对于图书馆的代码,但它行不通。我正在使用DEVC 5.11。

  1. default_random_engine不是'std'的成员
  2. Simorriform_real_distribution不是'std'的成员
  3. 在此范围中没有声明"发电机"
  4. 在此范围中没有声明'发行'

另外,如何在C 中计算时间?

    #include <iostream>
    #include <random> 
    int main() {        
    int i, j, n, nmax;   
    std::default_random_engine generator;   
    std::uniform_real_distribution<double> distribution(0.0,1.0);                                   
    nmax = 3000;    
    for (n=200; n<nmax; i+=200) {       
       double x[n], y[n], A[n][n];      
       for (i=0; i<n; i++) {            
          x[i] = distribution(generator);           
          y[i] = 0;             
          for (j=0; j<n; j++) {
             A[i][j] = distribution(generator);             
          }         
       }        
       // start counting time 
       for (i=0; i<n; i++) {            
          for (j=0; j<n; j++) {
             y[i] = A[i,j] * x[j];          
          }         
       }        
       // stop counting time        
       // total_time = stop - start         
       // std::cout << total_time   
    } 
    return 0;    
    }

代码中的错误:

1. default_random_engineuniform_real_distribution不是C 98标准,因此所有四个错误都与此相关。您应该在计算机上安装C 11编译器。在这里,如果您在选项部分中使用标准,您将理解我的意思。

2.将A[i,j]更改为A[i][j]

3.您应该在第一个for环中将i+=200更改为n+=200

4.您可以这样创建2D向量:
vector<vector<int>> vec(row_num, vector<int>(col_num));

以及在时,执行时间的计算您可以使用<time.h>。这是使用std::vector的工作代码:

#include <iostream>
#include <random> 
#include <time.h>
#include <vector>
int main()
{
    int nmax;
    std::default_random_engine generator;
    std::uniform_real_distribution<double> distribution(0.0,1.0);
    nmax = 3000;
    for (int n=200; n < nmax; n+=200) {
        std::vector<double> x(n);
        std::vector<double> y(n);
        std::vector< std::vector<double> > A(n, std::vector<double>(n));
        for (int i=0; i<n; i++) {
            x[i] = distribution(generator);
            y[i] = 0;
            for (int j=0; j<n; j++) {
                A[i][j] = distribution(generator);
            }
        }
        // start counting time
        clock_t start = clock();
        for (int i=0; i<n; i++) {
            for (int j=0; j<n; j++) {
                y[i] = A[i][j] * x[j];
            }
        }
        // stop counting time
        clock_t stop = clock();
        // total_time = stop - start
        double elapsed = (double)(stop - start) * 1000.0 / CLOCKS_PER_SEC;
        std::cout << "Elapsed time: " << elapsed << std::endl;
    }
    return 0;
}