diff --git a/matroska/matroskacontainer.cpp b/matroska/matroskacontainer.cpp index 4ac0986..3891637 100644 --- a/matroska/matroskacontainer.cpp +++ b/matroska/matroskacontainer.cpp @@ -22,6 +22,8 @@ #include #include #include +#include +#include using namespace std; using namespace std::placeholders; @@ -314,11 +316,12 @@ size_t MatroskaContainer::chapterCount() const MatroskaAttachment *MatroskaContainer::createAttachment() { // generate unique ID - srand(time(nullptr)); - byte tries = 0; + static const auto randomEngine(default_random_engine(static_cast(chrono::system_clock::now().time_since_epoch().count()))); uint64 attachmentId; + auto dice(bind(uniform_int_distribution(), randomEngine)); + byte tries = 0; generateRandomId: - attachmentId = rand(); + attachmentId = dice(); if(tries < 0xFF) { for(const auto &attachment : m_attachments) { if(attachmentId == attachment->id()) {