[samuelson.md] Update np.random → Generator API#1002
Open
Chihiro2000GitHub wants to merge 1 commit into
Open
Conversation
56 tasks
📖 Netlify Preview Ready!Preview URL: https://pr-1002--sunny-cactus-210e3e.netlify.app Commit: 📚 Changed LecturesBuild Info
|
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.
Summary
This PR migrates legacy NumPy random API usage in
samuelson.mdas part of QuantEcon/meta#299.The lecture's uses of
np.random.seed(...)are replaced with an explicit seeded generatorrng = np.random.default_rng(seed), and the one remaining call that relied on NumPy's global state is given an explicit generator too.Related PRs and issues
I checked for open PRs and issues related to this lecture. No open PR modifies
samuelson.md. Issue #579 (amatplotlibdeprecation warning in this lecture, also reported by #587) concerns a different part of the file, and this PR does not attempt to address it.Details
simulate_samuelson,np.random.seed(seed)+np.random.normal(0, 1, n)→rng = np.random.default_rng(seed)+rng.normal(0, 1, n).SamuelsonLSS.plot_simulation,np.random.seed(seed)was seeding NumPy's global state so that the inheritedLinearStateSpace.simulatewould be reproducible. It now creates a local generator and passes it in:self.simulate(ts_length, random_state=rng).LinearStateSpace.simulatetakes arandom_stateargument and accepts aGenerator.sam_t.simulate(ts_length=n)call in "Using theLinearStateSpaceclass" passed norandom_stateand so drew from NumPy's global singleton. It is now given an explicit generator as well. That call was not seeded before and is not seeded now, so its output is as reproducible as it was.42at the call sites,0as the method default) are kept, and no new seed was introduced.np.random, and it does not describe specific realized paths.@jit,@njit,@jitclass,parallel=True,prange) code.samuelson.mdexecuted without errors.Note for reviewers
This migration changes some of the figures: the shocks are plotted directly as simulated paths, so a different stream gives different lines even with the seeds unchanged. I checked the rebuilt lecture and each figure still shows the behaviour it is meant to illustrate.
Hi @mmcky and @HumphreyYang, I'd be grateful if you could take a look when you have time.