В классе Random определяются два конструктора.

public Random() public Random(int seed)

Первый конструктор создает объект типа Random, использующий системное время для определения начального числа. А во втором конструкторе используется начальное значение seed, задаваемое явным образом.

Методы, определенные в классе Random, перечислены в табл. 21.14.

Таблица 21.14. Методы, определенные в классе Random

 

Метод

 

Назначение

 

Public virtual int Next()

public virtual int Next(int maxValue)

public virtual int Next(int minValue, int maxValue)

public virtual void NextBytes(byte [] buffer)

Public virtual double NextDouble()

Protected virtual double Sample()

 

Возвращает следующее случайное целое число, которое будет находиться в пределах от 0 до Int32 . MaxValue-1 включительно

Возвращает следующее случайное целое число, которое будет находиться в пределах от 0 до maxValue-1 включительно

Возвращает следующее случайное целое число, которое будет находиться в пределах от minValue до maxValue-1 включительно

Заполняет массив buffer последовательностью случайных целых чисел. Каждый байт в массиве будет находиться в пределах от 0 до Byte .MaxValue-1 включительно

Возвращает из последовательности следующее случайное число, которое представлено в форме с плавающей точкой, больше или равно 0,0 и меньше 1,0 Возвращает из последовательности следующее случайное число, которое представлено в форме с плавающей точкой, больше или равно 0,0 и меньше 1,0. Для получения несимметричного или специального распределения случайных чисел этот метод необходимо переопределить в производном классе

 

Ниже приведена программа, в которой применение класса Random демонстрируется на примере создания компьютерного варианта пары игральных костей.

// Компьютерный вариант пары играль/ных костей.

Using System;

class RandDice {

static void Main() {

Random ran = new Random();

Console.Write(ran.Next(1, 7) + " ");

Console.WriteLine(ran.Next(1, 7));

}

}

При выполнении этой программы три раза подряд могут быть получены, например, следующие результаты.

5 2

4 4

1 6

Сначала в этой программе создается объект класса Random. А затем в ней запрашиваются два случайных значения в пределах от 1 до 6.

Управление памятью и класс GC

В классе GC инкапсулируются средства "сборки мусора". Методы, определенные в этом классе, перечислены в табл. 21.15.

Таблица 21.15. Методы, определенные в классе GC

 

Метод

 

Назначение

 

Public static

voidAddMemoryPressure(long bytesAllocated) public static void CancelFullGCNotification () public static void Collect () public static void Collect(int generation)

public static void Collect (int generation, GCCollectionMode mode)

public static int CollectionCount (int generation)

public static int GetGeneration (object obj)

 

Задает в качестве параметра bytes Allocated количество байтов, распределенных в неуправляемой области памяти Отменяет уведомление о “сборке мусора”

Инициализирует процесс “сборки мусора” Инициализирует процесс “сборки мусора” в областях памяти с номерами поколений от 0 до

generation

Инициализирует процесс “сборки мусора” в областях памяти с номерами поколений от 0 до generation в'режиме, определяемом параметром mode

Возвращает количество операций “сборки мусора”, выполненных в области памяти с номером поколения generation Возвращает номером поколения для области памяти, доступной по ссылке obj

 

_ Продолжение табл. 21.15

 

Метод

 

Назначение

 

Public static int

 

Возвращает номер поколения для области па

 

GetGeneration(WeakReference wo)

 

мяти, доступной по “слабой" ссылке, задавае

 

мой параметром wo. Наличие “слабой" ссылки не защищает объект от “сборки мусора”

 

Public static long

 

Возвращает общий объем памяти (в байтах),

 

GetTotalMemory(bool

 

выделенной на данный момент. Если параметр

 

forceFullCollection)

 

forceFullCollection имеет логическое значение true, то сначала выполняется “сборка мусора”

 

Public static void

 

Создает ссылку на объект obj, защищая

 

KeepAlive(object obj)

 

его от “сборки мусора”. Действие этой ссылки оканчивается после выполнения метода

KeepAlive()

 

Public static void Regist

 

Разрешает уведомление о “сборке мусора”. Зна