C ++随机生成器mt19937,是<random>还是<bits random.h =“”>?

时间:2015-11-19 17:29:53

标签: c++ random clion

我已经从here和(更确切地说)here确认您需要#include<random>才能使用std::mt19937,但是当我在CLion中执行此操作时,CLion标记它是红色的,表明它在<bits/random.h>。那么是哪一个呢?我应该#include两个人吗?但我认为不推荐使用.h扩展名的头文件?

顺便说一下,我在CentOS Linux 7.1.1503版上使用了GCC 4.8.3的CLion 1.2.1。

2 个答案:

答案 0 :(得分:3)

它是<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>title</title> <!-- Here are all the javascripts and css that you need, you can download them or linked them like here --> <script type="text/javascript" src="d3.js"></script> <script type="text/javascript" src="c3.js"></script> <link href="c3.css" rel="stylesheet" type="text/css"> </head> <body> <div id="chart"></div> <script> var obj2 = ['<?php echo $output; ?>']; var chart = c3.generate({ bindto: '#chart', data: { json: [ obj2 ], // or URL keys: { // x: 'name', // it's possible to specify 'x' when category axis value: ['close '], } }, axis: { x: { // type: 'category' } } }); </script> </body> </html>

<random>是GCC特定的实现。仅包含<bits/random.h>

CLION通过搜索实际定义的错过的课程来普遍地做到这一点,对于GCC,它是<random>,这就是为什么它建议包含它。这不是正式的错误,但这是非跨平台甚至非交叉编译器。

答案 1 :(得分:2)

您应该升级GCC(2015年11月的当前版本为GCC 5.2并且它有更好的C ++ 11支持)并将其作为g++ -std=c++11调用(同时使用{{ 1}}获取所有警告,更多信息和调试信息)当然使用-Wall -Wextra -g,如文档here所述。

(升级到GCC 5.2可以通过从downloaded源代码编译来完成;如果需要,可以提出其他问题)

如果您只是直接#include <random>它是特定于实现的(从不自己包含#include <bits/random.h>内部标题)和IIRC,您将收到错误(或至少一个严重的警告)。

您不需要使用Clion。编译器是GCC。