Вы пытались решить проблему с клейкой лентой?
Попробуйте определить, когда возникают ошибки, и исправьте их короткими операторами if, это не очень, но для некоторых проблем это единственное решение, и это один из них .
if( (n * 0.1) < 100.0 ) { return n * 0.1 - 0.000000000000001 ;}
else { return n * 0.1 + 0.000000000000001 ;}
У меня была такая же проблема в проекте научной симуляции в c #, и я могу сказать вам, что если вы проигнорируете эффект бабочки, он превратится в большого толстого дракона и укусит вас в a **
Из http://en.cppreference.com/w/cpp/numeric/random/random_device :
Обратите внимание, что std :: random_device может быть реализовано в терминах движка псевдослучайных чисел, если для реализации не доступен недетерминированный источник (например, аппаратное устройство).
blockquote>Я ожидал бы достойной реализации, по крайней мере, RNG.
Редактирование: я подозреваю, что они сознательно выбрали выполнение одной и той же последовательности каждый раз, чтобы сделать очевидным тот факт, что поток не был таким случайным, как обещали.
Я получил подтвержденный ответ от STL от MSFT :
В отличие от VC, GCC не реализовал random_device недетерминированно в Windows. Boost, поэтому вы можете использовать Boost.Random.
Вам может потребоваться передать параметр конструктору:
https://gcc.gnu.org/onlinedocs/gcc-4.9.1/libstdc++/api/a00899.html