【问题标题】:How do I display a random element of a vector?如何显示矢量的随机元素?
【发布时间】:2022-12-31 02:34:21
【问题描述】:

我试图随机显示“first”、“among”、“shift”、“debug”和“craft”,但每次运行项目时它都会打印“shift”。如果这与我的问题有关,我在 macOS Ventura 上使用 Xcode。

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main() {
    vector <string> vec {"first", "among", "shift", "debug", "craft"};
    int rand_num = rand() % vec.size();
    string word;
    word = vec[rand_num];
    
    cout << word;
    
    return 0;
}

我希望它随机显示“first”、“among”、“shift”、“debug”或“craft”,但它只打印了“shift”

【问题讨论】:

  • 您是否尝试为随机数生成器播种?
  • 每本解释rand 的 C 或 C++ 教科书也解释了另一个函数,并提供了如何正确使用它的详细说明。你的教科书怎么说?

标签: c++ random


【解决方案1】:

rand() 生成一个伪随机数字序列,给定相同的种子将相同。由于您没有使用 srand 显式初始化种子,因此您会一直获得相同的随机值。

初始化它以便在每次执行时获得不同种子的一种方法是使用当前时间:

// Must be called before you call rand:
srand (time(NULL));

【讨论】:

    【解决方案2】:

    rand() 函数给出一个介于 0 和 RAND_MAX 之间的随机值,每次编译代码时该值都相同,除非您使用 srand() 函数对其进行播种。您的代码不使用 srand(),因此每次运行程序时 rand_num 都使用相同的值进行初始化。

    附带说明 - 我是该平台的新手,所以我不知道这是否是回答问题的正确方法。如果需要进行一些更改,我们很乐意进行编辑

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 2017-09-28
      • 1970-01-01
      • 2021-04-02
      • 2021-01-29
      • 2017-06-07
      • 2015-08-20
      相关资源
      最近更新 更多