NextDouble
должен давать вам равномерное распределение.Это не то же самое, что сказать, что все полученные значения будут усреднены по среднему.
Возможно, настоящая проблема, с которой вы сталкиваетесь, заключается в том, что kin
вычисляется неправильно.Для каждой итерации вы добавляете sum ^ 2
.Возведение в квадрат отрицательного всегда приводит к положительному числу, и вы добавляете результат к kin
, кроме того.Если вы не суммировали kin
, а просто вычислили после цикла, то есть kin = Math.Pow(sum, 2)
, то вы увидите, что sum
делает стремящимся к 0.
Кроме того, как уже упоминалось в комментариях, вы неправильно используете сгенерированные случайные числа и дублируете вычисления.Вот модификации, которые я рекомендую:
Dim rand As New Random()
Dim sum As Double = 0
Dim kin As Double = 0
Dim randomValue As Double
For j As Integer = 0 To 99
randomValue = (rand.NextDouble() * 2 - 1) * Math.Sqrt(2)
Console.WriteLine(" {0} ", randomValue)
sum = sum + randomValue
Next
kin = Math.Pow(sum, 2)
Console.WriteLine(sum)
Console.WriteLine(kin)