mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-28 18:20:14 +01:00
[ion] Add a host tool to generate random events
Change-Id: I5a4db0ed5dcf2a1ae8743c2d3cda8dde6bd5962d
This commit is contained in:
47
ion/src/shared/tools/event_generator.cpp
Normal file
47
ion/src/shared/tools/event_generator.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <random>
|
||||
#include <cstdio>
|
||||
#include <ion/events.h>
|
||||
|
||||
void writeEventsToFile(std::ofstream & file, int numberOfEvents, std::mt19937 & rng) {
|
||||
std::uniform_int_distribution<int> distribution(0,Ion::Events::Event::k_numberOfEvents);
|
||||
|
||||
int i = numberOfEvents;
|
||||
while (i > 0) {
|
||||
int prEventId = distribution(rng);
|
||||
Ion::Events::Event e(prEventId);
|
||||
if (e.isValid()) {
|
||||
i--;
|
||||
file << (char)(prEventId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
if (argc != 3) {
|
||||
std::cerr << "Usage: event_generator <count> <length_avg>" << std::endl;
|
||||
return -1;
|
||||
}
|
||||
|
||||
std::random_device r;
|
||||
std::mt19937 mt(r());
|
||||
|
||||
int count = std::stoi(argv[1]);
|
||||
int lengthAvg = std::stoi(argv[2]);
|
||||
int lengthStdDev = lengthAvg;
|
||||
|
||||
std::normal_distribution<> lengthDistribution(lengthAvg, lengthStdDev);
|
||||
|
||||
for (int i=0; i<count; i++) {
|
||||
char buffer[32];
|
||||
sprintf(buffer, "scenario_%04d.bin", i);
|
||||
std::string fileName(buffer);
|
||||
std::ofstream file;
|
||||
file.open(fileName);
|
||||
writeEventsToFile(file, lengthDistribution(mt), mt);
|
||||
file.close();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user