朱莉娅无法复制兰特

Julia cannot reproduce the rand

我正在阅读和练习 https://juliadatascience.io/standardlibrary 的“3.5.2.1 rand”部分,发现下面的代码无法重现相同的随机数:

$ julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.7.0 (2021-11-30)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> using Random: rand, randn, seed!

julia> my_seed = seed!(123)
Random.TaskLocalRNG()

julia> rand(my_seed, 3)

3-element Vector{Float64}:
 0.521213795535383
 0.5868067574533484
 0.8908786980927811

julia> rand(my_seed, 3)
3-element Vector{Float64}:
 0.19090669902576285
 0.5256623915420473
 0.3905882754313441

本书快照:

您错过了书中对 seed! 的第二次调用。

发现得很好。 运行 rand(my_seed, 3) 两次不应该给出相同的输出。此问题是由 Books.jl 中的错误引起的。 Books 包将输出存储在文件中作为一种缓存机制。不幸的是,两个相同的代码块将写入相同的文件路径,因此最后一个块的输出会覆盖第一个块的输出。我仍然没有找到解决该问题的好方法,通常这不是问题,因为相同的代码通常会给出相同的输出,但调用 rand.

时却不会。

此问题将在 https://github.com/JuliaDataScience/JuliaDataScience/pull/235 合并后约 30 分钟在网站上的 HTML 和 PDF 版本中修复。