【问题标题】:randomize() and random() functions in c++ work only in certain compilersc++ 中的 randomize() 和 random() 函数仅在某些编译器中有效
【发布时间】:2015-04-20 13:01:36
【问题描述】:

我在学校学习 C++,在那里我们使用 Turbo C++。但是在家里,我在 Ubuntu 中使用 Dev C++ 或终端来编译程序。
函数randomize()random()经常使用,我们包括stdlib.h来调用它们。但是在开发和终端中,我收到一条错误消息,指出该功能不存在。
这可能是什么原因,我可以用什么代替?

【问题讨论】:

  • 这两个不是史前的吗?
  • 你为什么不用rand()
  • 我并不奇怪你的编译器不支持非标准 25 岁编译器的函数。
  • 我用 Turbo C 学习了 C。你应该使用的函数是 rand() 或者如果你的编译器支持它(我认为它应该支持,而不是 Turbo C)std::rand(在 cstdlib 中定义) .
  • 您应该知道 Turbo C++ 理解 C++ 的一种古老方言。如果您正在学习 C++ 以在当今的就业市场上具有竞争力,那么您应该清楚地了解 Turbo C++ 的局限性。

标签: c++ random


【解决方案1】:

这些不是标准的 C 或 C++ 函数。在标准 C 和 C++ 中,srandrand<stdlib.h> 标头的一部分。

这些函数可能是 Turbo C++ 的一部分,以提高与 Turbo Pascal 的兼容性,其中 randomizerandom 是默认的随机数生成器。

不幸的是,这个生成器的质量非常糟糕非常。现代 C++ 有 better alternatives,但由于 Turbo C++ 和 Dev++ 都相当老了,你将无法使用它们。

【讨论】:

  • Dev-C++ 有许多发行版,有些是旧的,有些是新的。但无论哪种方式,它的陈旧度并不完全相关,因为它使用的编译器和库是可配置的。因此,您可以将其设置为使用 C++11 实现,并且一些发行版附带了该实现。
【解决方案2】:

您正在谈论的功能已从标准中替换,但是某些编译器仍然继续支持它们,但是您不会在 gcc 编译器(在您的情况下为 ubuntu 终端)中找到这些功能,现在在标准中有两个功能在库中<cstdlib> (stdlib.h)randsrand。您应该使用它们来实现您的目的。供您参考http://www.cplusplus.com/reference/cstdlib/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 2012-02-11
    • 2015-10-04
    • 1970-01-01
    相关资源
    最近更新 更多