【问题标题】:Use of random() in c++在 C++ 中使用 random()
【发布时间】:2014-09-13 15:45:33
【问题描述】:
#include <iostream>
#include <random>
#include <conio.h>
using namespace std;
const int lim=4;
int main(){
    randomize();
    int p;
    p=100+random(lim);
    for(int i=p;i>=100;i--){
     cout<<i<<"#";  
    }
    cout<<endl;
    getch();
    return 0;
}

当我运行这段代码时,我没有得到任何输出。我不应该在这里得到输出吗?谁能告诉我怎么了?

【问题讨论】:

  • 也许 i 和 p 已经小于 100
  • C++ 没有 randomizerandom 函数。
  • 我今天在 C++ 决赛中遇到了这个问题。该问题要求我们预测上述代码的 1 个可能输出。而且,怎么可能C++没有这样的功能,代码还能编译?
  • @Monk,它不能(便携)。可能有一个额外的标题,其中定义了您未在此处包含的那些函数。
  • @chris 我确实包含了整个代码 - 我使用 codelite IDE 用 g++ 编译了它。

标签: c++ c++11 random io output


【解决方案1】:

randomrandomize 函数甚至不存在于 &lt;random&gt; 标头中。它们可能存在于您的工作环境中,谁知道编译器可以隐式包含什么,但是,它不是标准 C++。

相反,创建一个随机数设备(这将为您提供randomize()),选择一个 PRNG(包含数字生成算法),然后创建一个统一的整数分布(在这种情况下,您可能需要介于 100 和103,其中可能出现以下任一数字:100、101、102 或 103)。

random_device rd;
minstd_rand gen(rd());
std::uniform_int_distribution<> dis(100, 103);

然后生成一个这样的数字:

int p = dis(gen);

【讨论】:

    猜你喜欢
    • 2016-03-11
    • 2017-07-16
    • 2011-02-04
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2015-03-31
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多