diff --git a/mindspore/ccsrc/minddata/dataset/util/random.h b/mindspore/ccsrc/minddata/dataset/util/random.h index 4d4e0b0d32..315e0af345 100644 --- a/mindspore/ccsrc/minddata/dataset/util/random.h +++ b/mindspore/ccsrc/minddata/dataset/util/random.h @@ -17,6 +17,9 @@ #define MINDSPORE_CCSRC_MINDDATA_DATASET_UTIL_RANDOM_H_ #if defined(_WIN32) || defined(_WIN64) +#ifndef _CRT_RAND_S +#define _CRT_RAND_S +#endif #include #endif #include diff --git a/mindspore/ccsrc/minddata/mindrecord/io/shard_writer.cc b/mindspore/ccsrc/minddata/mindrecord/io/shard_writer.cc index 7ab9db19aa..92aea29db1 100644 --- a/mindspore/ccsrc/minddata/mindrecord/io/shard_writer.cc +++ b/mindspore/ccsrc/minddata/mindrecord/io/shard_writer.cc @@ -14,6 +14,7 @@ * limitations under the License. */ +#include "minddata/dataset/util/random.h" #include "minddata/mindrecord/include/shard_writer.h" #include "utils/ms_utils.h" #include "minddata/mindrecord/include/common/shard_utils.h" @@ -1156,8 +1157,8 @@ std::vector> ShardWriter::BreakIntoShards() { std::vector v_list(shard_count_); std::iota(v_list.begin(), v_list.end(), 0); - std::random_device rd; - std::mt19937 g(rd()); + + std::mt19937 g = mindspore::dataset::GetRandomDevice(); std::shuffle(v_list.begin(), v_list.end(), g); std::unordered_set set(v_list.begin(), v_list.begin() + remains); diff --git a/mindspore/ccsrc/minddata/mindrecord/meta/shard_task.cc b/mindspore/ccsrc/minddata/mindrecord/meta/shard_task.cc index e760920400..07c34964a9 100644 --- a/mindspore/ccsrc/minddata/mindrecord/meta/shard_task.cc +++ b/mindspore/ccsrc/minddata/mindrecord/meta/shard_task.cc @@ -14,6 +14,7 @@ * limitations under the License. */ +#include "minddata/dataset/util/random.h" #include "minddata/mindrecord/include/shard_task.h" #include "utils/ms_utils.h" #include "minddata/mindrecord/include/common/shard_utils.h" @@ -65,8 +66,7 @@ std::tuple, std::vector, json> &ShardTa } std::tuple, std::vector, json> &ShardTask::GetRandomTask() { - std::random_device rd; - std::mt19937 gen(rd()); + std::mt19937 gen = mindspore::dataset::GetRandomDevice(); std::uniform_int_distribution<> dis(0, task_list_.size() - 1); return task_list_[dis(gen)]; }