Skip to content

noise processes don't appear to be reproducible #249

@ExpandingMan

Description

@ExpandingMan

Describe the bug 🐞

I cannot reproduce the solution to a noise process by setting the RNG.

Expected behavior

Passing the same RNG should reproduce exactly the same process

Minimal Reproducible Example 👇

using DiffEqNoiseProcess, SciMLBase, Random

mwe() = let
    rng = Xoshiro(999)
    W = RealWienerProcess(0.0, 0.0, 1.0; rng=rng)
    prob = NoiseProblem(W, (0.0, 10.0), rng=rng)
    SciMLBase.solve(prob; dt=0.01, rng=rng)
end

The result of this is always different, expect it to be the same on every call.

Environment (please complete the following information):

  • Output of using Pkg; Pkg.status()
Status `/tmp/jl_XrioLr/Project.toml`
  [77a26b50] DiffEqNoiseProcess v5.26.0
  [0bca4576] SciMLBase v2.134.0
  [9a3f8284] Random v1.11.0
  • Output of using Pkg; Pkg.status(; mode = PKGMODE_MANIFEST)
Status `/tmp/jl_XrioLr/Manifest.toml`
  [47edcb42] ADTypes v1.21.0
  [7d9f7c33] Accessors v0.1.43
  [79e6a3ab] Adapt v4.4.0
  [66dad0bd] AliasTables v1.1.3
  [4fba245c] ArrayInterface v7.22.0
  [62783981] BitTwiddlingConvenienceFunctions v0.1.6
  [70df07ce] BracketingNonlinearSolve v1.6.2
  [2a0fbf3d] CPUSummary v0.2.7
  [fb6a15b2] CloseOpenIntervals v0.1.13
  [38540f10] CommonSolve v0.2.6
  [f70d9fcc] CommonWorldInvalidations v1.0.0
  [34da2185] Compat v4.18.1
  [a33af91c] CompositionsBase v0.1.2
  [2569d6c7] ConcreteStructs v0.2.3
  [187b0558] ConstructionBase v1.6.0
  [adafc99b] CpuId v0.3.1
  [9a962f9c] DataAPI v1.16.0
  [864edb3b] DataStructures v0.19.3
  [2b5f629d] DiffEqBase v6.199.0
  [77a26b50] DiffEqNoiseProcess v5.26.0
  [a0c0ee7d] DifferentiationInterface v0.7.14
  [31c24e10] Distributions v0.25.123
  [ffbed154] DocStringExtensions v0.9.5
  [4e289a0a] EnumX v1.0.6
  [f151be2c] EnzymeCore v0.8.18
  [e2ba6199] ExprTools v0.1.10
  [55351af7] ExproniconLite v0.10.14
  [7034ab61] FastBroadcast v0.3.5
  [9aa1b823] FastClosures v0.3.2
  [a4df4552] FastPower v1.3.0
  [1a297f60] FillArrays v1.16.0
  [069b7b12] FunctionWrappers v1.1.3
  [77dc65aa] FunctionWrappersWrappers v0.1.3
  [46192b85] GPUArraysCore v0.2.0
  [34004b35] HypergeometricFunctions v0.3.28
  [615f187c] IfElse v0.1.1
  [3587e190] InverseFunctions v0.1.17
  [92d709cd] IrrationalConstants v0.2.6
  [82899510] IteratorInterfaceExtensions v1.0.0
  [692b3bcd] JLLWrappers v1.7.1
  [ae98c720] Jieko v0.2.1
  [10f19ff3] LayoutPointers v0.1.17
  [2ab3a3ac] LogExpFunctions v0.3.29
  [e6f89c97] LoggingExtras v1.2.0
  [1914dd2f] MacroTools v0.5.16
  [d125e4d3] ManualMemory v0.1.8
  [bb5d69b7] MaybeInplace v0.1.4
  [e1d29d7a] Missings v1.2.0
  [2e0e35c7] Moshi v0.3.7
  [46d2c3a1] MuladdMacro v0.2.4
  [be0214bd] NonlinearSolveBase v2.10.0
  [bac558e1] OrderedCollections v1.8.1
  [90014a1f] PDMats v0.11.37
  [e409e4f3] PoissonRandom v0.4.7
  [f517fe37] Polyester v0.7.18
  [1d0040c9] PolyesterWeave v0.2.2
  [d236fae5] PreallocationTools v1.0.0 [loaded: v0.4.34]
  [aea7be01] PrecompileTools v1.3.3
  [21216c6a] Preferences v1.5.1
  [43287f4e] PtrArrays v1.3.0
  [1fd47b50] QuadGK v2.11.2
  [74087812] Random123 v1.7.1
  [e6cf234a] RandomNumbers v1.6.0
  [3cdcf5f2] RecipesBase v1.3.4
  [731186ca] RecursiveArrayTools v3.45.1
  [189a3867] Reexport v1.2.2
  [ae029012] Requires v1.3.1
  [ae5879a3] ResettableStacks v1.2.0
  [79098fc4] Rmath v0.9.0
  [7e49a35a] RuntimeGeneratedFunctions v0.5.16
  [94e857df] SIMDTypes v0.1.0
  [0bca4576] SciMLBase v2.134.0
  [19f34311] SciMLJacobianOperators v0.1.12
  [a6db7da4] SciMLLogging v1.8.0
  [c0aeaf25] SciMLOperators v1.14.1
  [431bcebd] SciMLPublic v1.0.1
  [53ae85a6] SciMLStructures v1.10.0
  [efcf1570] Setfield v1.1.2
  [a2af1166] SortingAlgorithms v1.2.2
  [276daf66] SpecialFunctions v2.6.1
  [aedffcd0] Static v1.3.1
  [0d7ed370] StaticArrayInterface v1.8.0
  [90137ffa] StaticArrays v1.9.16
  [1e83bf80] StaticArraysCore v1.4.4
  [10745b16] Statistics v1.11.1
  [82ae8749] StatsAPI v1.8.0
  [2913bbd2] StatsBase v0.34.10
  [4c63d2b9] StatsFuns v1.5.2
  [7792a7ef] StrideArraysCore v0.5.8
  [2efcf032] SymbolicIndexingInterface v0.3.46
  [8290d209] ThreadingUtilities v0.5.5
  [a759f4b9] TimerOutputs v0.5.29
  [781d530d] TruncatedStacktraces v1.4.0
  [efe28fd5] OpenSpecFun_jll v0.5.6+0
  [f50d1b31] Rmath_jll v0.5.1+0
  [56f22d72] Artifacts v1.11.0
  [2a0f44e3] Base64 v1.11.0
  [ade2ca70] Dates v1.11.0
  [8ba89e20] Distributed v1.11.0
  [9fa8497b] Future v1.11.0
  [b77e0a4c] InteractiveUtils v1.11.0
  [ac6e5ff7] JuliaSyntaxHighlighting v1.12.0
  [8f399da3] Libdl v1.11.0
  [37e2e46d] LinearAlgebra v1.12.0
  [56ddb016] Logging v1.11.0
  [d6f4376e] Markdown v1.11.0
  [de0858da] Printf v1.11.0
  [9a3f8284] Random v1.11.0
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization v1.11.0
  [6462fe0b] Sockets v1.11.0
  [2f01184e] SparseArrays v1.12.0
  [f489334b] StyledStrings v1.11.0
  [4607b0f0] SuiteSparse
  [fa267f1f] TOML v1.0.3
  [cf7118a7] UUIDs v1.11.0
  [4ec0a83e] Unicode v1.11.0
  [e66e0078] CompilerSupportLibraries_jll v1.3.0+1
  [4536629a] OpenBLAS_jll v0.3.29+0
  [05823500] OpenLibm_jll v0.8.7+0
  [bea87d4a] SuiteSparse_jll v7.8.3+2
  [8e850b90] libblastrampoline_jll v5.15.0+0
  • Output of versioninfo()
Julia Version 1.12.4
Commit 01a2eadb047 (2026-01-06 16:56 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 16 × AMD Ryzen 7 3800X 8-Core Processor
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, znver2)
  GC: Built with stock GC
Threads: 16 default, 1 interactive, 16 GC (on 16 virtual cores)
Environment:
  JULIA_EDITOR = nvim
  JULIA_NUM_THREADS = auto
  JULIA_PKG_USE_CLI_GIT = true

Additional context

Adding the line Random.seed!(999) to the start of mwe gives expected reproducible behavior. It seems the default RNG is being used somewhere even when I pass these arguments, but I'm not sure where.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions