fix random generation implementation

This commit is contained in:
bolero-MURAKAMI 2014-01-16 01:04:31 +09:00
parent 406a1ff789
commit 3879666b02
18 changed files with 140 additions and 110 deletions

View file

@ -15,6 +15,7 @@
#include <sprout/random/random_result.hpp>
#include <sprout/random/linear_congruential.hpp>
#include <sprout/random/type_traits.hpp>
#include <sprout/generator/functions.hpp>
#include <sprout/type_traits/enabler_if.hpp>
namespace sprout {
@ -52,12 +53,12 @@ namespace sprout {
template<typename Random1, typename Random2>
SPROUT_CONSTEXPR sprout::random::random_result<additive_combine_engine> generate(Random1 const& rnd1, Random2 const& rnd2) const {
return sprout::random::random_result<additive_combine_engine>(
rnd2.result() < rnd1.result()
? rnd1.result() - rnd2.result()
: rnd1.result() - rnd2.result() + base1_type::modulus - 1
sprout::generators::generated_value(rnd2) < sprout::generators::generated_value(rnd1)
? sprout::generators::generated_value(rnd1) - sprout::generators::generated_value(rnd2)
: sprout::generators::generated_value(rnd1) - sprout::generators::generated_value(rnd2) + base1_type::modulus - 1
,
additive_combine_engine(
rnd1.engine(), rnd2.engine(),
sprout::generators::next_generator(rnd1), sprout::generators::next_generator(rnd2),
private_construct_t()
)
);