Sampling from the seed hash done in ServerApp, the result is different between 1.60 and 1.62
Though I doubt so, I am curious is if is portable (wrt OS) for the same boost version.
With the move to c++11, this could be changed to std::hash, which would at least reduce the case for boost version.
I do not see any guarantee of portable results from std::hash however, the implication is the opposite:
If std::hash is not consistent across OSes, but boost::hash is (and the opposite case between boost versions), between the two I'd opt to keep boost::hash.http://en.cppreference.com/w/cpp/utility/hash wrote:The actual hash functions are implementation-dependent and are not required to fulfill any other quality criteria except those specified above.
For the PRNG itself, std::mt19937 is "required" to produce the same results, but AFAIK none of the distributions like std::normal_distribution provide such requirement (same case for boost).
'Simply' providing a custom, portable value for seed translation might still provide different results between platforms without a custom distribution as well.
I'll open a PR for result requests from this branch, if it looks like std::hash may be desired.
(Previous results, so I don't lose them in such a case)
seed: aaaaBBBB = (std)2783040585 (boost 1_60)2892594671
seed: aaaaBBBB = (std)2783040585 (boost 1_62)1426502312
seed: aaaabbbb = (std)4214164133 (boost 1_60)3005869415
seed: aaaabbbb = (std)4214164133 (boost 1_62)2207442920
seed: 6uTwEu5q = (std)4078502888 (boost 1_60)4027358770
seed: 6uTwEu5q = (std)4078502888 (boost 1_62)707295000
Another option might be to only store the string value and push all the related PRNG calls to python, though I have not found as much discussion on portability there.