Генератор случайного номера VB.Net, генерируя тот же номер много раз

У меня есть эта программа, генерируя имя и фамилия из файла. Когда я запускаю эту программу, я вхожу в информацию в три текстовых ящика. Первые два являются низкими и высокими зарплатой (Salry1.Text, Salry2.Text) и последний - это количество «копий» (Copies.text), которые я хочу .. Когда я положил число, например, в текстовом поле, выводит некоторые из одних и то же имен.

Файл Имя имеет около 100 записей И файл фамилия имеет около 1000 записей

Почему он генерирует одно и то же имя

, проблема еще хуже, если я сделаю что-то вроде 1000 экземпляров .. это выводит то же самое 8 раз, а затем делает что-то другое

Public Class Form1

    Dim sex As String

Function randomfirstname()
    Dim infile As IO.StreamReader
    Dim infile1 As IO.StreamReader
    Dim male() As String
    Dim female() As String
    Dim name As String
    Dim n As Integer = 0
    Dim fun As New System.Random
    Dim maleorfemale As New Random()
    Dim RandomNumber As Integer
    Dim index As Integer
    RandomNumber = maleorfemale.Next(0, 55984)
    infile = IO.File.OpenText("boysnames.txt")
    infile1 = IO.File.OpenText("girlsnames.txt")

    If RandomNumber Mod 2 = 0 Then
        While infile.Peek <> -1
            ReDim Preserve male(n)
            male(n) = infile.ReadLine
            n = n + 1
        End While
        n = n - 1
        index = fun.Next(0, n)
        name = male(index)
        sex = "M"
        n = 0
        Return name


    Else
        While infile1.Peek <> -1
            ReDim Preserve female(n)
            female(n) = infile1.ReadLine
            n = n + 1
        End While
        n = n - 1
        index = fun.Next(0, n)
        name = female(index)
        sex = "F"
        Return name
        n = 0
    End If
End Function
Function randomlastname()
    Dim infile2 As IO.StreamReader
    Dim lname() As String
    Dim lastname As String
    Dim n As Integer = 0
    Dim index As Integer
    Dim fun As New System.Random
    infile2 = IO.File.OpenText("lastname.txt")
    While infile2.Peek <> -1
        ReDim Preserve lname(n)
        lname(n) = infile2.ReadLine
        n = n + 1
    End While
    n = n - 1
    index = fun.Next(0, n)
    lastname = lname(index)
    Return lastname
End Function
Function salary()
    Dim salary01 As Double
    Dim salary02 As Double
    Dim salary03 As Double
    salary01 = CDbl(salary1.Text)
    salary02 = CDbl(salary2.Text)
    Dim sal As New System.Random


    salary03 = System.Math.Round(sal.NextDouble() * (salary02 - salary01) + salary01, 2)
    Return salary03
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'ListBox1.Items.Add(randomfirstname() & vbTab & randomlastname() & vbTab & sex & vbTab & salary())
    Dim outfile As New System.IO.StreamWriter("C:\Users\Johnathon\Desktop\486assign1.txt")
    Dim i As Integer = 0
    outfile.Write("Firstname" & vbTab & "LastName" & vbTab & "Sex" & vbTab & "Salary" & vbCrLf)
    outfile.Write("-----------------------------------------------------------------------------" & vbCrLf)

    For i = 1 To CInt(copies.Text)
        outfile.Write(randomfirstname() & vbTab & randomlastname() & vbTab & sex & vbTab & salary() & vbCrLf)
        ListBox1.Items.Add(randomfirstname() & vbTab & randomlastname() & vbTab & sex & vbTab & salary())
    Next
    outfile.Close()

End Sub
End Class

Выход образца с 10 записями

Firstname   LastName    Sex Salary
-----------------------------------------------------------------------------
Carson  Gillespie   M   8.46    
Carson  Gillespie   M   8.46
Carson  Gillespie   M   8.46
Samantha    Daniels F   5.84
Samantha    Daniels F   5.84
Samantha    Daniels F   5.84
Natalia Guthrie F   9.26
Natalia Guthrie F   9.26
Natalia Guthrie F   9.26
Natalia Guthrie F   6.64
5
задан user867621 17 September 2011 в 17:12
поделиться