1- #include < cstdlib>
21#include < fstream>
32#include < iostream>
3+ #include < random>
44#include < string>
55
66#include " gtest/gtest.h"
@@ -62,8 +62,10 @@ TEST(OutputLayer, can_get_topk_with_vector) {
6262 labels);
6363 std::vector<double > input;
6464 // get random nums
65+ std::mt19937 rng (42 );
66+ std::uniform_real_distribution<double > dist01 (0.0 , 1.0 );
6567 for (size_t i = 0 ; i < labels.size (); i++) {
66- input.push_back (static_cast < double >( std::rand ()) / RAND_MAX );
68+ input.push_back (dist01 (rng) );
6769 }
6870 ASSERT_NO_THROW (auto topk1 = top_k_vec (input, labels, k));
6971}
@@ -75,9 +77,10 @@ TEST(OutputLayer, can_get_topk_with_layer_float) {
7577 labels);
7678 std::vector<float > input;
7779 // get random nums
80+ std::mt19937 rng2 (42 );
81+ std::uniform_real_distribution<float > dist01f (0 .0F , 1 .0F );
7882 for (size_t i = 0 ; i < labels.size (); i++) {
79- input.push_back (
80- static_cast <float >(static_cast <double >(std::rand ()) / RAND_MAX ));
83+ input.push_back (dist01f (rng2));
8184 }
8285 Tensor input_tensor = make_tensor (input);
8386 OutputLayer layer (labels);
@@ -91,8 +94,11 @@ TEST(OutputLayer, can_get_topk_with_layer_int) {
9194 labels);
9295 std::vector<int > input;
9396 // get random nums
97+ std::mt19937 rng3 (42 );
98+ std::uniform_int_distribution<int > dist_int (0 ,
99+ std::numeric_limits<int >::max ());
94100 for (size_t i = 0 ; i < labels.size (); i++) {
95- input.push_back (std::rand ( ));
101+ input.push_back (dist_int (rng3 ));
96102 }
97103 Tensor input_tensor = make_tensor (input);
98104 OutputLayer layer (labels);
@@ -106,8 +112,11 @@ TEST(OutputLayer, topk_throws_when_not_1d_input) {
106112 labels);
107113 std::vector<int > input;
108114 // get random nums
115+ std::mt19937 rng4 (42 );
116+ std::uniform_int_distribution<int > dist_int2 (0 ,
117+ std::numeric_limits<int >::max ());
109118 for (size_t i = 0 ; i < labels.size (); i++) {
110- input.push_back (std::rand ( ));
119+ input.push_back (dist_int2 (rng4 ));
111120 }
112121 Tensor input_tensor = make_tensor (input, {5 , 200 });
113122 OutputLayer layer (labels);
@@ -121,8 +130,11 @@ TEST(OutputLayer, topk_throws_when_incorrect_input_size) {
121130 labels);
122131 std::vector<int > input;
123132 // get random nums
133+ std::mt19937 rng5 (42 );
134+ std::uniform_int_distribution<int > dist_int3 (0 ,
135+ std::numeric_limits<int >::max ());
124136 for (size_t i = 0 ; i < 20 ; i++) {
125- input.push_back (std::rand ( ));
137+ input.push_back (dist_int3 (rng5 ));
126138 }
127139 Tensor input_tensor = make_tensor (input);
128140 OutputLayer layer (labels);
@@ -136,8 +148,11 @@ TEST(OutputLayer, topk_throws_when_too_big_k) {
136148 labels);
137149 std::vector<int > input;
138150 // get random nums
151+ std::mt19937 rng6 (42 );
152+ std::uniform_int_distribution<int > dist_int4 (0 ,
153+ std::numeric_limits<int >::max ());
139154 for (size_t i = 0 ; i < labels.size (); i++) {
140- input.push_back (std::rand ( ));
155+ input.push_back (dist_int4 (rng6 ));
141156 }
142157 Tensor input_tensor = make_tensor (input);
143158 OutputLayer layer (labels);
0 commit comments