mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-14 15:04:09 +00:00
fix random generation implementation
This commit is contained in:
parent
406a1ff789
commit
3879666b02
18 changed files with 140 additions and 110 deletions
|
@ -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()
|
||||
)
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue