Книга: 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.
- Члены пространства имен System
- Класс Math
- Структуры .NET, соответствующие встроенным типам значений
- Класс Array
- Класс BitConverter
- Генерирование случайных чисел средствами класса Random
- Управление памятью и класс GC
- Класс object
- Класс Tuple
- Интерфейсы IComparable и IComparable
- Интерфейс IEquatable
- Интерфейс IConvertible
- Интерфейс ICloneable
- Интерфейсы IFormatProvider и IFormattable
- Интерфейсы IObservable и IObserver
- 3.4. Отношения между классами
- Генерирование исключений
- 9.7.1. Определение подкласса
- 5.3. Округление чисел с плавающей точкой
- Инварианты класса и семантика ссылок
- Использование различных форматов чисел
- 12.6.2. Функции POSIX: random() и srandom()
- Реализация класса бинарных деревьев
- Using a Pseudorandom Number Generator
- PROJECT 10.2 — Random Number Generator
- ФУНКЦИЯ ПОЛУЧЕНИЯ ЦЕЛЫХ ЧИСЕЛ: getint( )
- Листинг А.4. (number.c) Арифметика унарных чисел