Improve default seed to spread out the entropy over all 3 words#11165
Open
RaimoNiskanen wants to merge 1 commit into
Open
Improve default seed to spread out the entropy over all 3 words#11165RaimoNiskanen wants to merge 1 commit into
RaimoNiskanen wants to merge 1 commit into
Conversation
Contributor
CT Test Results 2 files 100 suites 1h 6m 48s ⏱️ Results for commit a74b351. ♻️ This comment has been updated with latest results. To speed up review, make sure that you have read Contributing to Erlang/OTP and that all checks pass. See the TESTING and DEVELOPMENT HowTo guides for details about how to run test locally. Artifacts
// Erlang/OTP Github Action Bot |
bjorng
approved these changes
Jun 1, 2026
dgud
approved these changes
Jun 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This fixes a spuriously failing test case for the
exro928ssgenerator in therandmodule, namelyrand_SUITE:seed/1, on Windows.The reason for these spurious failures stems from that the default seed is the 3 integers
{erlang:phash2([{node(),self()]), erlang:system_time(), erlang:unique_integer()}.For the
exro928ssgenerator this makes the two first state words the same if the system time is the same for two calls. The third seed word and all subsequent will differ, though.The test case in question tests that two successive seeds does not give the same random number sequence. But that is tested by simply checking if the first random value is the same. And for the
exro928ssgenerator it is the second state word that determines the first generated number, so the first number will be the same (but not subsequent numbers).The test case could be refined to check more numbers, but this PR does a hopefully better fix, which is to use MD5 to spread out the entropy of the same 3 values over all seed words. So even if it is just
erlang:unique_integer()that differs between two seeds, about half of the bits in all seed words should differ.This should minimize the probability to get the same value in any generator state word for any two default seeds.