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.