-2

私は vb.net で本当に奇妙な問題を抱えています。何らかの理由で system.random() がどの関数でもまったくランダムではありません:

Public Function RandomNumber(ByVal MaxNumber As Integer, Optional ByVal MinNumber As Integer = 0) As Integer

        Dim R As System.Random = New System.Random()
        If MinNumber > MaxNumber Then
            Dim T As Integer = MinNumber
            MinNumber = MaxNumber
            MaxNumber = T
        End If
        Return R.Next(MinNumber, MaxNumber)
    End Function

これは正確に9回呼び出した後の結果です

4
4
4
3
3
3
3
3
3
4

1 に答える 1

5

これは、Random の実装方法によるものです。最も簡単な修正は、関​​数内ではなく、クラス レベルで次の行を宣言することです。

 Dim R As System.Random = New System.Random()

Random クラスは時間をシードとして使用します。あなたがやっている方法では、新しい Random を毎秒数回宣言する可能性が最も高いため、 Random.Next は、以前に「乱数」が既に作成されていたことを認識していません。クラス レベルで宣言すると、関数呼び出しの範囲外に存在し、既に番号が生成されていることを「認識」し、別の番号を生成できるようになります。

例: http://www.dotnetperls.com/random

于 2013-03-27T21:37:55.513 に答える