I don't know animation nodes, though the basic principle is simple: graph a function and supply slightly different inputs to get slightly different outputs.
For example, sine function, passing X coordinate as input, and using Y coordinate as output:
With the result:
Not much happens, because the range is only [-1, 1], increase the range by multiplying X by 8 - now it's [-8, 8]:
And so the function repeats:
Sine output is in range [-1, 1], going across the entire plane. Let's limit it, by dividing by 3:
Now the Y is in range $[-{1\over3}, {1\over3}]$:
Time to add some random transformations:
The bottom branch visible as the bottom, ghost curve:
The rest is just figuring out interesting parameters and duplicating the setup many times:
And the result:
The reference images show a function which output curves don't intersect. In the method above it's easy to accidentally intersect curves. Perhaps a smarter method would be to just use a 1D noise for X, and multiply it by Y, to guarantee no intersections as well as perhaps allow to have an infinite amount of curves with a constant (and small) number of nodes. Also the curve thickness could be more even if the Epsilon used x > Cosine > Multiply Add... But that's not an issue in Anim/Geo nodes.