How to produce uniformly distributed low-frequency noise? I want to design noise for the sake of modulation and it should have a frequency of under 1 Hz. This seems impossible to do for a frequency that low.
Here is my Matlab script. The lowest frequency that gives me something useful is 2 Hz. But also then the noise does not travel over the whole amplitude range from 0 to 1. It jumps to 0.9 and is stuck there.
Is there maybe a filter that is suited better?
fs = 44100;
L = 10 * fs;
fpass = 2;
fstop = fpass*2;
x = rand(L,1);

fs = 44100;
Wp = fpass * (2 * pi)/fs;
Ws = fstop * (2 * pi)/fs;
Rp = 0.01;
Rs = 40;

[n, ~] = ellipord(Wp, Ws, Rp, Rs);
[b, a] = ellip(n, Rp, Rs, Wp);


y = filter(b, a, x);

plot(x) 
hold on;
plot(y)
hold off;
Well, this is one way you could do it: with LTspice, use the white() function. There are also rand() ([0,1] V, pulses) and random() ([0,1] V, smooth pulses), but white(2*fs*time) will give you what you want between [-0.5, 0.5] V:

B1 is a behavioural current source (bi, or bi2, as it appears in the component selection dialog, F2), and the .wavecommand exports it as a .wav file named output.wav, with 16 bits resolution (can be anything from 1 to 32) and 44.1 kHz sampling frequency (can be any number from 1 to 4294967295). For this case, the file is 8,820,046 bytes, which can be imported. This is a 2 Hz white noise, band limited, properly sampled signal, 100 sec long. Optional settings can include a tighter timestep, though opt plotwinsize=0, here, disables waveform compression and for a 2 Hz signal, it may not make much sense.