gpt4 book ai didi

c++ - 循环中的 RNG 并从字符串数组中打印单词

转载 作者:行者123 更新时间:2023-11-28 06:03:27 25 4
gpt4 key购买 nike

好的,我现在已经完美地工作了,我已经编辑了这篇文章和下面的代码以反射(reflect)更新后的正确工作代码。

  1. 从一个文本文件中读取 50 个单词到一个字符串数组中

  2. 程序将随机数用于:

    a.- 它将生成一个介于 2 和 7 之间的随机数,用于选择要在句子中使用的单词

    b.- 它将生成一个随机数来选择单词。数字将在 0 到 49 之间,因为这些是单词在数组中的位置

  3. 它将句子显示在屏幕上。

提前感谢您的任何建议

#include <string>
#include <iostream>
#include <fstream>
#include <time.h>
#include <stdlib.h>
#include <array>

using namespace std;

int main() {
ofstream outFile;
ifstream inFile;
const int size = 50; //initiate constant size for array
string word[size]; //initialize array of string
srand(time(0)); //sets timing factor for random variables

int Random2 = rand() % 6 + 2; //determines random value beteen 2 and 7
inFile.open("words.txt"); //opens input text file
if (!inFile.is_open()) { //tests to see if file opened corrected
exit(EXIT_FAILURE);
}
while (!inFile.eof()) { //Puts file info into string
for (int i = 0; i < size; ++i)
inFile >> word[i];
}
for (int i = 0; i < Random2; i++) { //loops through array and generates second random variable each loop to determine word to print
int Random1 = rand() % size;
cout << word[Random1] << " ";
}
cin.get();
}

最佳答案

int generateRandom()
{
default_random_engine generator;
uniform_int_distribution<int> distribution(0, 49);
int random = distribution(generator); // generates number in the range 0..49
return random;
}

问题是每次调用 getRandom()函数创建一个新的 PRNG 实例。因此,每个实例只被调用一次,第一个结果总是相同的。

相反,您希望创建一次实例并多次调用相同实例。

default_random_engine generator;
uniform_int_distribution<int> distribution(0, 49);

for (int i = 0; i < 5; ++i)
{
std::cout << distribution(generator) << std::endl;
}

cout << words[generateRandom()]

words声明为 std::string 类型.使用 []访问字符串中的单个字符。你在这里期待什么?您是否打算拥有一组字符串(即文本文件中的每一行一个)?如果是这样,你想要类似 std::vector<std::string> words 的东西.现在使用 words[0]访问数组中的一个元素,每个元素的类型都是 std::string (与之前的单个字符相反)。

关于c++ - 循环中的 RNG 并从字符串数组中打印单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32834931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com