"include/vscode:/vscode.git/clone" did not exist on "6c066bc36825a627876952f833cf4f4e7c18ef45"
Commit 0d5a0bc9 authored by Po-Yen, Chen's avatar Po-Yen, Chen
Browse files

Allow FillUniformDistribution accept range arugment

parent ee119d9e
...@@ -5,7 +5,10 @@ ...@@ -5,7 +5,10 @@
#include <algorithm> #include <algorithm>
#include <cmath> #include <cmath>
#include <iterator>
#include <random> #include <random>
#include <type_traits>
#include <utility>
#include "ck/utility/data_type.hpp" #include "ck/utility/data_type.hpp"
...@@ -25,6 +28,15 @@ struct FillUniformDistribution ...@@ -25,6 +28,15 @@ struct FillUniformDistribution
std::uniform_real_distribution<float> dis(a_, b_); std::uniform_real_distribution<float> dis(a_, b_);
std::generate(first, last, [&dis, &gen]() { return ck::type_convert<T>(dis(gen)); }); std::generate(first, last, [&dis, &gen]() { return ck::type_convert<T>(dis(gen)); });
} }
template <typename ForwardRange>
auto operator()(ForwardRange&& range) -> std::void_t<decltype(
std::declval<FillUniformDistribution>()(std::begin(std::forward<ForwardRange>(range)),
std::end(std::forward<ForwardRange>(range))))>
{
(*this)(std::begin(std::forward<ForwardRange>(range)),
std::end(std::forward<ForwardRange>(range)));
}
}; };
// Normally FillUniformDistributionIntegerValue should use std::uniform_int_distribution as below. // Normally FillUniformDistributionIntegerValue should use std::uniform_int_distribution as below.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment