Смекни!
smekni.com

Генерирование псевдослучайных чисел на примере создания игры Сапер (стр. 2 из 5)

1. Он был разработан с целью иметь огромный период, размером 219937 − 1.

2. Он имеет высокий порядок пространственного эквираспространения.

3. Он значительно быстрее, чем все остальные генераторы, за исключением статистически-дефектных генераторов.

4. Он статистически случаен во всех выходных битах.

Генерирование случайных чисел с помощью класса Random в С#.

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

В классе Random определены следующие два конструктора:

public Random()

public Random(int seed)

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

Класс Random (сокращено)

//Конструкторы

Random ()

Random(int а);

//Методыэкземпляра

int Next () ;

int Next(int макс_значение) ;

int Next(int мин_значение, int макс_значение) ;

double NextDouble() ;

Конструкторы возвращают случайные объекты, которые образуют последовательность псевдослучайных чисел. Методы Next возвращают следующее число в последовательности, возможно, между заданными значениями. NextDouble возвращает число в диапазоне от 0.0 до 1.0.

Сравнив методы получения псевдослучайных чисел для реализации в программе, я выбрал, помимо метода, основанного на использовании системного класса Random, линейный конгруэнтный метод и алгоритм Блюма, Блюма и Шуба, исходя из преимуществ этих методов перед другими:

¾ более простое математическое представление, а следовательно и программная реализация;

¾ возможность получения любого числа, располагая только значением стартового.

1.2.Целесообразность выбора языка

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

1. Возможность создания Windows приложений.

2. Создание максимально возможного удобства в работе

3. Поддержка других языков программирования и платформ

4. Большое количество библиотек

5. Простота изучения языка на основе имеющихся знаний.

Первый критерий резко отсекает большое количество различных языков, т. к. программа должна иметь удобный и современный интерфейс пользователя. Поддержка многих языков программирования и платформ позволит пользователю усовершенствовать данный проект на различных языках. Большое количество библиотек дает возможность значительно уменьшить исходный код программы.

Сформулировав требования, нужно перейти к анализу существующих языков программирования.

Сотни имеющихся языков могут быть подразделены на три общих типа: машинные, ассемблерные и языки высокого уровня.

Машинные языки неудобны для восприятия человеком. Машинные языки являются машинно-зависимыми, т.е. конкретный машинный язык может быть использован только с определённым типом компьютера.

Для преобразования программ были разработаны программы-трансляторы, называемые ассемблерами. С появлением языков ассемблера использование компьютеров значительно расширилось, однако всё ещё требовалось написание большого количества инструкций даже для реализации решений простейших задач.

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

На практике программисту-одиночке или небольшой рабочей группе придется использовать какие-то мощные средства, вроде визуальных систем программирования (Visual Basic, C++Builder, С#, Delphi) или же универсальную среду разработки типа Borland C++ в сочетании с библиотекой классов, такой, как OWL или MFC. [3]

Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Borland Delphi , Microsoft Visual Basic. С появлением Visual Basic программирование в Windows не становится более эффективным, но оно становится более простым (в большинстве случаев).

Если говорить о создании программ с интерфейсом Windows, то нельзя, конечно, не обойти вниманием визуальные средства программирования C++Builder. Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т. к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом. C++ Builder буквально навязывает программисту свой собственный стиль программирования, при котором, даже при особом желании, перейти с C++ Builder на что-то другое уже не предоставляется возможным. С++ не поддерживает других языков программирования.

Delphi — это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi — строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal. Borland Delphi 7 Studio позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. Delphi- не поддерживает других языков программирования, но способен поддерживать различные платформы.

Однако, при всем этом выбор падает на язык С#, входящий в VisualStudio .Net , так как он имеет ряд преимуществ, которые упрощают процесс создания приложений.

C# создавался Microsoft, как основной язык для .NET Framework. Microsoft спроектировала C# таким образом, что бы С, С++ и Java-программисты смогли легко перейти на него. C# имеет корни в языках С, С++ и Java, поэтому такой переход не должен вызвать затруднений.

Синтаксис у C# не такой сложный как у С++, поэтому его изучение намного легче. Большинство операций, которые вы можете делать на С++, можно сделать и на C#, за исключением операций доступа к низкоуровневым функциям (это все-таки можно сделать с помощью неуправляемого кода).

С# - первый язык, поддерживаемый версиями .NET Framework для других платформ.

C# имеет схожий с C стиль синтаксиса (для управляющих конструкций, блоков кода, описания сигнатуры методов и др.), много общего с Java (отсутствие множественного наследования и шаблонов, наличие сборщика мусора) и Delphi (ориентированность на создание компонент), в то же время имеет и свой колорит.

C# объектно-ориентированный язык, как и вся платформа .NET[7].

В C# представлена концепция пространств имен, аналогичная пакетам в Java. Это позволяет иерархически структурировать систему типов, делая код намного более понятным и позволяя избежать проблем с именованием. Реализация структур как типов, работа с которыми идет по значению, вместе с возможностью использовать не только вложенные массивы (как в Java), но и многомерные позволяет оптимизировать производительность приложений.

Ввиду очень удобного объектно-ориентированного дизайна, C# является хорошим выбором для быстрого конструирования различных компонентов.

Платформа .Net содержит множество важных служб:

1. .Net предоставляет средства для исполнения инструкций, содержащихся в программе, написанной на C#. Эта часть .Net называется средой исполнения.

2. .Net помогает реализовать так называемую среду, безопасную к несоответствию типов данных.

3. .Net освобождает программиста от утомительного и нередко приводящего к ошибкам процесса управления компьютерной памятью, которая используется программой.

4. .Net предоставляет безопасную среду исполнения.

5. В состав .Net входят библиотека, содержащая массу готовых программных компонентов, которые можно использовать в собственных программах. Она экономит немало времени, так как программист может воспользоваться готовыми фрагментами кода. Фактически, он повторно использует код, созданный и тщательно проверенный профессиональными программистами Microsoft.

6. В .Net упрощена подготовка программы к исполнению.

7. .Net обеспечивает прекрасное взаимодействие программ, написанных на разных языках. Любой язык поддерживаемый .Net , может взаимодействовать с другими языками этой платформы.

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

2.Конструкторская часть

2.1.Структура проекта.

Данный проект состоит из файлов

Ниже представлено описание основных файлов:

¾ Form1.cs – файл, в котором содержится код, отвечающий за работу главной формы программы;

¾ Form1.resx – файл, в котором содержится информация о графическом представлении главной формы «Сапер»;

¾ Form2.cs - файл, в котором содержится код, отвечающий за работу формы настроек игрового поля;

¾ Form2.resx – файл, в котором содержится информация о графическом представлении формы настроек игрового поля;

¾ AboutBox1.cs - файл, в котором содержится код, отвечающий за работу формы «О программе»;

¾ AboutBox1.resx – файл, в котором содержится информация о графическом представлении формы «О программе»;

¾ Справка.htm– HTML-страница, в которой содержится справка по игре;

¾ Мина.jpg – изображение мины на форме «О программе»

¾ Сапер.exe - закомпилированный файл программы, находящийся в папке debug, которая находится в папке bin

2.2. Программная реализация основных элементов C#.

Для его запуска необходимо кликнуть кнопку Пуск, выбрать в пункте Все программы\Microsoft Visual Studio .NET 2005\MicrosoftVisualStudio .NET 2005. Далее в запустившемся приложении кликнуть кнопку OpenProject и используя проводник, выбрать файл Сапер.sln. Программа откроет приложение. Для изменения внешнего вида программы необходимо воспользоваться ярлыком Design. Можно добавить новые элементы формы, перетащив их из окна Toolbox. В моей работе это HelpProvider и MenuStrip при конструировании главной формы, Label, TextBox и Button при создании формы настроек игрового поля. Свойства компонентов можно изменить, зайдя в меню ViewPropertiesWindows или в коде программы: