Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Random.GetItems breaking change in produced sequence #108017

Merged
merged 1 commit into from
Sep 19, 2024

Conversation

stephentoub
Copy link
Member

Developers, often in tests, rely on seeded Random instances producing the same sequence of values on every use. We made a change in .NET 9, though, that changed the sequence GetItems produces, due to employing a different algorithm. This fixes that special-case to only be used when the developer couldn't rely on the results being deterministic, namely when using either new Random() or Random.Shared. If a seed is provided or if a custom derived implementation is used, it falls back to the old behavior.

cc: @bartonjs, @vcsjones

Developers, often in tests, rely on seeded Random instances producing the same sequence of values on every use. We made a change in .NET 9, though, that changed the sequence GetItems produces, due to employing a different algorithm. This fixes that special-case to only be used when the developer couldn't rely on the results being deterministic, namely when using either `new Random()` or `Random.Shared`. If a seed is provided or if a custom derived implementation is used, it falls back to the old behavior.
@dotnet-issue-labeler dotnet-issue-labeler bot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Sep 19, 2024
@stephentoub
Copy link
Member Author

/backport to release/9.0-rc2

Copy link
Contributor

Started backporting to release/9.0-rc2: https://github.com/dotnet/runtime/actions/runs/10940955057

@stephentoub stephentoub added area-System.Runtime and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Sep 19, 2024
Copy link
Contributor

Tagging subscribers to this area: @dotnet/area-system-runtime
See info in area-owners.md if you want to be subscribed.

@stephentoub stephentoub changed the title Fix Random.GetItems observably breaking change in produced sequence Fix Random.GetItems breaking change in produced sequence Sep 19, 2024
@stephentoub
Copy link
Member Author

/ba-g dead letter queue

@stephentoub stephentoub merged commit 58f431b into dotnet:main Sep 19, 2024
146 of 148 checks passed
@stephentoub stephentoub deleted the fixrandom branch September 19, 2024 18:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants