c++ - 实现自己的随机函数是否被普遍接受? (C++)

标签 c++ function c++11 random stl

假设您正在从事一个需要随机数的(严肃的)项目。

行如下:

int num = rand() % 6 + 5; //random number between 5 - 10

(显然)不会出现在那里。 C++11 头文件 <random>毫无疑问地击败了这个老 C-Style。

std::random_device rd;
std::mt19937 engine(rd());
std::uniform_int_distribution<int> generate(5, 10);
int num = generate(engine);

但是在团队中工作时,我发现这种方法有两个问题:

  • 语法奇怪且难以阅读。

  • 对于这样一个通常很简单的任务来说太复杂了。

所以如果有一个函数(基于这个方法)看起来像这样就好了:

int getRandom(int range_begin, int range_end);

据我所知,没有这样的STL函数。所以问问大家的经验:自己实现这个功能可以吗?也许导出到一个单独的标题中,然后为 double 和 float 等重载它。 我问这个问题,因为在这个现代 C++ 时代,使用 STL 函数是标准的,在这种情况下,语法实际上迫使你自己实现。感谢您提供有关此主题的帮助和经验。

编辑:最后我想问的是,在任何处理随机数的项目中,这样的实现是否总是(迟早)会发生。

最佳答案

C++ 的主要目标之一是使编写特定领域的抽象变得容易;如果您编写的代码经常使用特定形式的随机数生成,请务必将其封装在适当的函数中。

关于c++ - 实现自己的随机函数是否被普遍接受? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39808827/

相关文章:

c++ - 最准确的线相交坐标计算与 float ?

c++ - 将指针而不是迭代器传递给 std::copy

C++:指向另一个类函数的函数指针

c - 使用函数传递数组

c++ - MinGW 不支持 std::defaultfloat,如何引导它?

C++ 递归 mpl::equal 问题?

c++ - Eclipse 中类的多重定义错误

svn - Mercurial 的函数历史记录

C++ 迭代器如何实现 next() 和 previous() 函数

c++ - SFINAE 函数的 "catch-all"?