diff --git a/src/core/hle/service/acc/profile_manager.h b/src/core/hle/service/acc/profile_manager.h
index 90851909535e388e5333d67734e7d935b8c848df..314bccbf93aeec8eba57c15641573939bbe01575 100644
--- a/src/core/hle/service/acc/profile_manager.h
+++ b/src/core/hle/service/acc/profile_manager.h
@@ -5,6 +5,7 @@
 #pragma once
 
 #include <array>
+#include <random>
 #include "boost/optional.hpp"
 #include "common/common_types.h"
 #include "common/swap.h"
@@ -38,8 +39,12 @@ struct UUID {
 
     // TODO(ogniK): Properly generate uuids based on RFC-4122
     const UUID& Generate() {
-        uuid[0] = (static_cast<u64>(std::rand()) << 32) | std::rand();
-        uuid[1] = (static_cast<u64>(std::rand()) << 32) | std::rand();
+        std::random_device device;
+        std::mt19937 gen(device());
+        std::uniform_int_distribution<uint64_t> distribution(1,
+                                                             std::numeric_limits<uint64_t>::max());
+        uuid[0] = distribution(gen);
+        uuid[1] = distribution(gen);
         return *this;
     }