Here's how values are currently changed in the program. Notice that it uses a looping method of gaussian generation:
Public Function PiuMeno() As Integer
PiuMeno = Random(0, 1)
If PiuMeno = 0 Then PiuMeno = -1
End Function
Public Function Gauss(low, up) As Long
For t = 1 To 10
Gauss = Gauss + Random(low, up)
Next t
Gauss = Gauss / 10
End Function
k = DNA(t).value + PiuMeno * Gauss(1, DNA(t).value + PiuMeno * 10)
If k < -32000 Then k = 32000
If k > 32000 Then k = 32000
DNA(t).value = Int(k)
Bots, the problem I'm talking about needs a double or single to isolate. Try your test code with a and b as singles, and you'll see your caption probably isn't exactly 1.000000000000000000. Run it for ever, and it still won't be 1.00000000000000000000 even though it should be. No randomizer is perfect. That is what I'm talking about. Some randomizers are much better at eliminating bias than others are, though.
Finding good methods to generate random numbers with no bias is Computer Science doctoral dissertation stuff. It's big business. It takes alot of math (more math than I know and I'm a math major).