You are absolutely right, my logic for generating the passphrase is made elementary, although it is dangerous to use
any software RNG for this, especially in open source.
An intelligent user can create seed himself or add any of words and symbols as entropy.
As an option, I will add the ability to use any arbitrary file as a seed, and multiple hash (>100000) to slow down brute-force, this will be really reliable, I believe.

It is more secure, in that method, to use the
System.Security.Cryptography.RNGCryptoServiceProvider class than Random and then use it's GetBytes method to get a byte value which OP then takes the modulus of
words.Length. For example:
using System.Security.Cryptography;
# ...
public static String RandomSeed() {
RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider();
byte[] randomNumber = new byte[1];
string res = "";
for (int i = 0; i < 12; i++) {
rngCsp.GetBytes(randomNumber);
int r = (int) randomNumber[0] % words.Length;
res += words[r].ToLower() + (i < 11 ? " " : "");
}
rngCsp.Dispose();
return res;
}
# ...
Note: I did not test this code for syntax errors.
Thanks for the code, but I don't think that a more complex RNG will change anything in this case, especially in open source, manual entropy is needed.