C++ rand() 不适用于字符串数组

标签 c++ random

我正在创建一个允许用户输入 3 个名称(或他们想要的任何字符串)的小程序。然后程序应该显示所有三个字符串(这是有效的),然后它应该使用 rand() 函数随机显示三个字符串之一。这是功能不正常的部分。

#include <iostream>
#include <string>

using namespace std;

void display(string[], int);

const int SIZE = 3;

int main()
{
    string names[SIZE];

    for (int i = 0; i < SIZE; i++)
    {
        cout << i + 1 << ": ";
        getline(cin, names[i]);
    }

    cout << endl;
    display(names, SIZE);

    int name = rand() % (2 + 1 - 0) + 0;
    cout << names[name];

    cin.get();

    return 0;
}

void display(string nm[], int n)
{
    int i = 0;

    for (i; i < n; i++)
    {
        cout << "Name " << i + 1 << ": ";
        cout << nm[i] << endl;
    }
}

我之前有不同的设置,它给了我一个错误,但是在将它更改为现在的样子之后,它总是给我最后一个元素 [2]。

这是代码错误,还是只是 rand() 在同一系统上总是给出相同的输出?

最佳答案

在评论中进行了一些讨论后,很明显问题是我不是 seeding rand()功能。以下是部分未运行的代码,已更正。

(另外,作为旁注,要使用 time() 函数,必须包含 <ctime><time.h>。)

srand(time(NULL));
int name = rand() % 3;
cout << names[name];

(感谢 @manni66 指出包含过于复杂的计算以获得 rand() 的范围是没有用的,因为它必须是一个整数。

关于C++ rand() 不适用于字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48112992/

相关文章:

c - 段错误,不知道为什么

javascript - 页面刷新上的随机标题图像,CSS jquery javascript?

android - 在android中通过JNI在C代码中打开文件时获取NULL

java - 使用 native 库(仅限 C,无 C++),并且未找到实现

c# - 随机数 0's or 1' s

android - 打印出颜色字符串 [Android]

python - 如何在 python 中创建一个加密安全的随机数?

c++ - ld : library not found for -lboost_system clang: error: linker command failed with exit code 1 (use -v to see invocation)

c++ - 如何将二维数组传递给函数以及如何调用它

c++ - OpenCV (C++/Qt) - cornerSubPix 错误