#include #include #include // Programa para gerar números aleatórios com distribuição uniforme. // // Os parâmetros são: // - nome do arquivo onde escrever os valores // - início da faixa de valores // - final da faixa de valores // - número de valores a gerar int main(int argc, char const *argv[]) { // Verifica se os argumentos necessários foram fornecidos. if (argc != 5) { std::cerr << "Usage: " << argv[0] << " " << " \n"; return 1; } std::string const filename{argv[1]}; // Abre o arquivo para escrita. Verifica se OK. std::ofstream datafile(filename); if (!datafile.is_open()) { std::cerr << "Could not open " << filename << std::endl; return 2; } // Lê os outros parâmetros. Irá lançar exceção se formato errado. double const start = std::stof(argv[2]); double const stop = std::stof(argv[3]); int const N = std::stod(argv[4]); // Maquinário para geração de números aleatórios. // Acesso a aleatoriedade do sistema. std::random_device dev; // Gerador de sequência aleatória. std::default_random_engine gen(dev()); // Formato da distribuição de dados. // Neste caso: distribuição uniforme de números double entre start e stop std::uniform_real_distribution dist(start, stop); // Gera N valores e escreve no arquivo, um por linha. for (int i = 0; i < N; ++i) { auto new_value = dist(gen); datafile << new_value << std::endl; // Verifica se a escrita deu certo. if (!datafile.good()) { std::cerr << "Could not write to " << filename << std::endl; return 3; } } return 0; }