При генерации случайных точек на PictureBox появляются полосы - Visual Basic .NET

Формулировка задачи:

Привет, форумчане. Делаю программу для нахождения числа Пи методом Монте-Карло и столкнулся с такой проблемой: когда я генерирую случайные координаты для последующей точки и наношу её на PictureBox у меня проявляется странная закономерность. Из сгенерированных точек вырисовываются прямые, причем чем больше количество точек тем они отчетливее. Прикладываю скриншоты и код.
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim g As Graphics = PictureBox1.CreateGraphics
        g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
        Dim p As New Pen(Color.Black, 2)
        For i = 1 To 50000
            Dim random1 As Integer
            Dim random2 As Integer
            Randomize()
            random1 = 2 + Rnd() * 648
            Randomize()
            random2 = 2 + Rnd() * 648
            g.DrawEllipse(p, random1, random2, 1, 1)
            count += 1
            If ((random1 - 324) * (random1 - 324) + (random2 - 324) * (random2 - 324) > 105625) Then
                outside += 1
            Else
                inside += 1
            End If
        Next
        Label2.Text = count
        Dim pi As Single
        pi = inside / count
        Label4.Text = pi * 4
    End Sub
Как это можно вылечить? Я подозреваю, что проблема в генерации координат этих самых точек, так как, насколько я знаю, случайности не случайны, а генерируются по формуле.

Код к задаче: «При генерации случайных точек на PictureBox появляются полосы - Visual Basic .NET»

textual
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        Dim g As Graphics = PictureBox1.CreateGraphics
        g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
        Dim p As New Pen(Color.Black, 2)
        Randomize()
        For i = 1 To 50000
            Dim random1 As Integer
            Dim random2 As Integer
            ' Randomize()
            random1 = 2 + Rnd() * 648
            ' Randomize()
            random2 = 2 + Rnd() * 648
            g.DrawEllipse(p, random1, random2, 1, 1)
            count += 1
            If ((random1 - 324) * (random1 - 324) + (random2 - 324) * (random2 - 324) > 105625) Then
                outside += 1
            Else
                inside += 1
            End If
        Next
        Label2.Text = count
        Dim pi As Single
        pi = inside / count
        Label4.Text = pi * 4
    End Sub

10   голосов, оценка 3.700 из 5


СОХРАНИТЬ ССЫЛКУ