Книга: C# 4.0: полное руководство

Генерирование случайных чисел средствами класса Random

Генерирование случайных чисел средствами класса Random

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

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

public Random()
public Random(int seed)

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

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

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

Метод - Назначение

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

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

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

public virtual void NextBytes(byte[] buffer) - Заполняет массив buffer последовательностью случайных целых чисел. Каждый байт в массиве будет находиться в пределах от 0 до Byte .MaxValue-1 включительно

public virtual double NextDouble() - Возвращает из последовательности следующее случайное число, которое представлено в форме с плавающей точкой, больше или равно 0,0 и меньше 1,0

protected virtual double Sample() - Возвращает из последовательности следующее случайное число, которое представлено в форме с плавающей точкой, больше или равно 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.

Оглавление книги


Генерация: 3.978. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз