C ++随机项关闭列表

时间:2013-07-12 18:02:43

标签: c++

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <Windows.h>
#include <ios>
#include <fstream>
#include <cstdlib> 
#include <iostream>
#include <ctime> 
#include <array>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int opt;
    ifstream ilist ("lsit.txt");
    char conti;
    string item;
    cout << "Options!\n1. Add\2. Generate\n Type the number of the option you want!";
    cin >> opt;
    ofstream list;
    vector<string> vlist;
    int coutn = 0;
    if (opt == 1)
    {
        list.open("lsit.txt", ios::app);
        cin >> item;
        list <<item <<endl;
        cout<< "Add more? (T/F)";
        cin >> conti;
        while(conti != 'F')
            {
                cin >> item ;
                list <<item <<endl;
                cout<< "Add more? (T/F)";
                cin >> conti;
            }
        list.close();
    }
    if (opt == 2)
    {
        while( ! ilist.eof() ){
        getline (ilist, item);
        vlist.push_back(item);
        coutn++;
        }
        string *arr;
        arr = new string[coutn];

        return 0;
    }
}

我需要将矢量中的信息加载到数组中,有人知道我怎么能这样做吗?

我正在制作的是可以将数据输入到文本文件中的内容,而不是从列表中提取(编号)随机项目。

感谢您为我完成此任务提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

#include <random>
...
srand( time(NULL) );        // Initializes the random seed
string randFromVector;
randFromVector = vlist[ rand() % vlist.size() ];    // Takes the data at this address

rand()提供一个随机数(“psuedo”随机,技术上)。然后,我们在vlist的长度上使用模块化,以确保它引用合法地址。

编辑:您只需要初始化一次随机种子。每次调用rand()时,它都会返回一个不同的数字。

你也可以通过这样做删除modulus bias

int x;
do {
    x= rand();
} while ( x >= vlist.size() );

randFromVector = vlist[ x];