Visual Basic .NET Language
случайный
Поиск…
Вступление
Класс Random используется для создания неотрицательных псевдослучайных целых чисел, которые не являются по-настоящему случайными, но для общих целей достаточно близки.
Последовательность вычисляется с использованием начального числа (так называемого семени ). В более ранних версиях .net это начальное число было одинаковым при каждом запуске приложения. Итак, что произойдет, так это то, что вы будете получать одну и ту же последовательность псевдослучайных чисел каждый раз, когда приложение будет выполнено. Теперь семя основывается на времени объявления объекта.
замечания
Наконец, заметка о рандомизации. Как упоминалось ранее, когда вы объявляете экземпляр Random
без каких-либо параметров, конструктор будет использовать текущее время в качестве части вычисления для создания начального начального числа. Обычно это нормально.
Тем не мение. Если вы повторно объявляете новые экземпляры за очень короткий промежуток времени, каждый раз, когда подсчитывается число семян, время может быть одинаковым. Рассмотрим этот код.
For i As Integer = 1 To 100000
Dim rnd As New Random
x = rnd.Next
Next
Поскольку в наши дни компьютеры очень быстрые, для выполнения этого кода потребуется немного секунды, а при нескольких повторных итерациях цикла системное время не изменится. Таким образом, количество семян не изменится, и случайное число будет одинаковым. Если вы хотите создать много случайных чисел, объявите экземпляр случайного вне цикла в этом простом примере.
Dim rnd As New Random
For i As Integer = 1 To 100000
x = rnd.Next
Next
Основное правило заключается в том, чтобы не создавать экземпляр генератора случайных чисел в течение коротких периодов времени.
Объявление экземпляра
Dim rng As New Random()
Это объявляет экземпляр класса Random, называемого rng
. В этом случае для вычисления семени используется текущее время в точке, где создается объект. Это наиболее распространенное использование, но имеет свои проблемы, как мы увидим позже в замечаниях
Вместо того, чтобы позволить программе использовать текущее время как часть вычисления начального номера семени, вы можете указать начальное число семян. Это может быть любой 32-разрядный целочисленный литерал, константа или переменная. Ниже приведены примеры. Это означает, что ваш экземпляр будет генерировать одну и ту же последовательность псевдослучайных чисел, которая может быть полезна в определенных ситуациях.
Dim rng As New Random(43352)
или же
Dim rng As New Random(x)
где x
был объявлен в другом месте вашей программы как константа или переменная Integer.
Создайте случайное число из экземпляра Random
В следующем примере объявляется новый экземпляр класса Random и затем используется метод .Next
для генерации следующего числа в последовательности псевдослучайных чисел.
Dim rnd As New Random
Dim x As Integer
x = rnd.Next
Последняя строка выше генерирует следующее псевдослучайное число и назначает его x
. Это число будет находиться в диапазоне от 0 до 2147483647. Однако вы также можете указать диапазон чисел, которые должны быть сгенерированы, как в приведенном ниже примере.
x = rnd.Next(15, 200)
Обратите внимание, однако, что с использованием этих параметров диапазон чисел будет находиться между 15 или выше и 199 или ниже.
Вы также можете генерировать числа с плавающей запятой типа Double, используя .NextDouble
eg
Dim rnd As New Random
Dim y As Double
y = rnd.NextDouble()
Однако вы не можете указать диапазон для этого. Он всегда будет в диапазоне от 0,0 до менее 1,0.