Using Randomize() before Rnd() in VB.NET

前端 未结 3 1691
野趣味
野趣味 2020-12-07 03:46

I have previously been told that I should always use Randomize() before I use Rnd() in a VB.NET application. Yet, it always seems to work fine with

相关标签:
3条回答
  • 2020-12-07 04:17

    In Visual Basic, Rnd() uses a mathematical operation to produce the next "random" number. Because the actual operation is known, given a specific value, you can predict the next value. However, given an arbitray start value the numbers have good distribution - these are "pseudo-random" numbers.

    To keep Rnd() from startng at a predictable number (and hence giving the same sequence of "random" numbers every time), Randomize() should be called to use the machine clock to set the initial value (called a seed).

    (In the .NET world, I'd use System.Random instead if you can.)

    0 讨论(0)
  • 2020-12-07 04:33

    Randomize will set the seed to something time related, like the system uptime or the system date. So the function Rand() will show different values every time the app is executed. However, I highly recommend you to use the System.Random class instead of VisualBasic Rand(). No need to call any randomize() function

    Here are some example code, this will generate six random integers from the lower to upper bounds:

    Dim randObj As New Random( seed )
    Dim j As Integer
    For j = 0 To 5
        Console.Write( "{0,11} ", randObj.Next( lower, upper ) )
    Next j
    Console.WriteLine( )
    
    0 讨论(0)
  • 2020-12-07 04:35

    Randomize() initializes the first seed of Rnd(). If you won't use it - VB.NET will use the default seed number.

    0 讨论(0)
提交回复
热议问题