Skip to content

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.
@ghost ghost 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

@github-actions
Copy link
Contributor

@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
@dotnet-policy-service
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
@stephentoub stephentoub deleted the fixrandom branch September 19, 2024 18:17
sirntar pushed a commit to sirntar/runtime that referenced this pull request Sep 30, 2024
…otnet#108017)

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.
@github-actions github-actions bot locked and limited conversation to collaborators Oct 20, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants