Lecture Set 9 Arrays, Collections and Repetition Part C - Random Numbers Rectangular and Jagged...

22
Lecture Set 9 Arrays, Collections and Repetition Part C - Random Numbers Rectangular and Jagged arrays

Transcript of Lecture Set 9 Arrays, Collections and Repetition Part C - Random Numbers Rectangular and Jagged...

Lecture Set 9

Arrays, Collections and Repetition

Part C - Random NumbersRectangular and Jagged arrays

Slide 2

Objectives

Understand the concept of random numbers and how to generate random numbers

Understand how to declare and manipulate rectangular and higher dimension arrays

Understand how to declare and manipulate jagged arrays

Working with arrays of objects

8/18/2013 1:06 PM

Slide 3

Introduction to Random Numbers

Applications that require random numbers Gaming and casino applications Computer simulations Test data generation

The process of creating a sequence of random numbers is called random number generation

8/18/2013 1:06 PM

Slide 4

Operation of a Random Number Generator

A random number generator is initialized based on a seed value Given the same seed value, the same

random number sequence will be generated Different seed values will generate different

random sequences The time of day (often expressed in

milliseconds) is often used to create random seed values

8/18/2013 1:06 PM

Slide 5

The System.Random Class

The System.Random class of the FCL is used to create a random number generator and generate and get random values

We can generate integer and double random values

The constructor of the System.Random class creates the random number generator (an instance of the random class)

Using no constructor arguments, a random seed value is used

The seed value is based on the time of dayRandom rndVal = new Random();

This is the same asRandom rndVal = new

Random(DateTime.Now.Millisecond);

8/18/2013 1:06 PM

Slide 6

The Next Method

Without arguments, the Next method gets a positive random Integer valueRandom rndValR = new Random;;int rndValI = rndValR.Next();

With two arguments, a value within a range is returned

The first argument contains the lower bound and the second argument contains the upper bound

rndValI = rndValR.Next(1, 10);rndValI = rndValR.Next(1, 6);// Let index be an integerindex = rndValR.Next(0, myDictionaryWords.Length - 1);

The second line could be used to generate the value of the roll of a single die. How would you generate a random value representing the roll of two dice?

8/18/2013 1:06 PM

Slide 7

The NextDouble Method

The NextDouble method returns a random value between 0.0 and 1.0 The value is in the interval

[0.0<=value<1.0) Closed on the left and open on the right

Example:double randomDouble;randomDouble = _

rndValR.NextDouble()‘A value such a .4599695143908786 is generated

8/18/2013 1:06 PM

Slide 8

Introduction to Two-dimensional Arrays

A two-dimensional array has rows and columns Conceptually, it's similar to a grid or table Two-dimensional arrays have two subscripts instead

of one Declare a two-dimensional array with

unspecified dimensionsint [,] Table;

Declare a two-dimensional array with 10 rows and 10 columnsint [9, 9] Table;

8/18/2013 1:06 PM

Slide 9

Initializing Two-dimensional Arrays

Two-dimensional arrays can be initialized just as one-dimensional arrays can be initialized

The array must not be given an initial size The initialization list is nested as follows:

int SalesArray[,] = { {150, 140, 170, 178}, {155, 148, 182, 190}, {162, 153, 191, 184}, {181, 176, 201, 203}};

8/18/2013 1:06 PM

Slide 10

Referencing Elements in a Two-dimensional Array

Two-dimensional arrays require two subscripts instead of one A comma separates the two subscripts

Reference the first row and column in the array named SalesArrayint cell;cell = SalesArray[0, 0];

8/18/2013 1:06 PM

Slide 11

Introduction to Three-dimensional Arrays (optional)

It's possible to create arrays with three dimensions

A three-dimensional array has three subscripts instead of two

Declare a dynamic three-dimensional arrayint cube[,,];

Declare a 10 by 10 by 10 array (1000 elements)double cube[10, 10, 10];

8/18/2013 1:06 PM

Slide 12

Working with Arrays of Objects

Arrays can store object references in addition to storing primary data types

Example to store text box references:textbox [3] textBoxList;textBoxList[0] = txtFirstName;textBoxList[1] = txtLastName;textBoxList[2] = txtAddress;

What does this array look like?

8/18/2013 1:06 PM

Slide 13

Memory Allocation to Store an Array of Text Boxes (VB)

8/18/2013 1:06 PM

Slide 14

Another View of 2D (Rectangular) Arrays

The syntax for declaring a rectangular array

type [firstupperbound, secondupperbound] arrayName;

A statement that creates a 3x2 array int [2, 1] numbers;

The syntax for referring to an element of a rectangular array

arrayName[rowindex, columnindex]

8/18/2013 1:06 PM

Slide 15

The syntax for using the GetLength method of a rectangular array

arrayName.GetLength(dimensionindex)

Code that works with the numbers array int [,] numbers = { {1,2}, {3,4}, {5,6} }; int numberOfRows = numbers.GetLength(0); int numberOfColumns = numbers.GetLength(1); int sumOfFirstRow = numbers[0,0]+ numbers[0,1];

Operations on a 2-Dimension Array

8/18/2013 1:06 PM

Slide 16

More Operations on a 2-Dimension Array

Code that displays the numbers array in a message box

string numbersString = ""; for (int i = 0; i < numbers.GetLength(0); i++) { for (int j = 0; j < numbers.GetLength(1); i++) { numbersString += numbers[i, j] + " "; } // end inner loop numbersString += "\n"; } // end outer loop MessageBox.Show(numbersString, "Numbers Test");

The message box that’s displayed

8/18/2013 1:06 PM

Slide 17

Jagged Arrays (by Example)

The syntax for declaring a jagged array type [numberofrows][] arrayName;

Code that declares a jagged array with three rows int numbers [3][]; ' 3 rows are declared numbers[0] = new int[2]; ' 3 columns for 1st row numbers[1] = new int[3]; ' 4 columns for 2nd row numbers[2] = new int[1]; ' 2 columns for 3rd row

8/18/2013 1:06 PM

Slide 18

Jagged Array References (optional)

I am not sure you will have occasion to do this – but maybe

The example is interesting from a pedagogic view

It illustrates memory allocation issues discussed already Referring to an element of a jagged array

arrayName[rowindex][columnindex]

Statements that assign values to the numbers array numbers[0][0) = 1; numbers[1][0] = 4; numbers[2][0] = 8; numbers[0][1) = 2; numbers[1][1] = 5; numbers[2][1] = 9; numbers[0][2) = 3; numbers[1][2] = 6; ] numbers[1][3] = 7;

8/18/2013 1:06 PM

Slide 19

More Jagged Array (examples – optional)

Code that creates the numbers array with one statement int [][] numbers = {new int[2] {1, 2, 3}, new int[3] {4, 5, 6, 7}, new int[1] {8, 9}}

Code that creates a jagged array of strings string [][]titles = _ {new string[2] {"War and Peace", "Wuthering Heights", "1984"}, new string[3] {"Casablanca", "Wizard of Oz", "Star Wars", "Birdy"}, new string[1] {"Blue Suede Shoes", "Yellow Submarine"}};

8/18/2013 1:06 PM

Slide 20

Yet ANOTHER Example (optional)

Code that displays the numbers array in a message box

string numbersString = ""; for (int i = 0; i < numbers.GetLength(0); i++) { for (int j = 0; j < numbers(i).Length; j++) { numbersString += numbers[i][j] + " "; } // end inner loop numbersString += "\n"; } // end outer loop MessageBox.Show(numbersString, "Jagged Numbers Test")

The message box that’s displayed

8/18/2013 1:06 PM

Slide 21

Common properties and methods of the Array class

Property Description

Length Gets the number of elements in all of the dimensions of an array.

Instance method Description

GetLength(dimension) Gets the number of elements in the specified dimension of an array.

GetUpperBound(dimension) Gets the index of the last element in the specified dimension of an array.

8/18/2013 1:06 PM

Slide 22

Common properties and methods of the Array class (continued)

Static method Description

Copy(array1, array2, length) Copies some or all of the values in one array to another array.

BinarySearch(array, value) Searches a one-dimensional array that’s in ascending order for an element with a specified value and returns the index for that element.

Sort(array) Sorts the elements in a one-dimensional array into ascending order.

8/18/2013 1:06 PM