Transcript CHAPTER 9

Lecture Set 9
Arrays, Collections and Repetition
Part C - Random Numbers
Rectangular and Jagged arrays
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
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
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
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 day
Random rndVal = new Random();
 This is the same as
Random rndVal = new Random(DateTime.Now.Millisecond);

8/18/2013 1:06 PM
The Next Method

Without arguments, the Next method gets a positive
random Integer value
Random 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 integer
index = 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
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
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
dimensions
int [,] Table;

Declare a two-dimensional array with 10 rows and 10
columns
int [9, 9] Table;
8/18/2013 1:06 PM
Initializing Two-dimensional Arrays

Two-dimensional arrays can be initialized just as onedimensional 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,
{155, 148, 182,
{162, 153, 191,
{181, 176, 201,
};
{
178},
190},
184},
203}
8/18/2013 1:06 PM
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 SalesArray
int cell;
cell = SalesArray[0, 0];
8/18/2013 1:06 PM
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 array
int cube[,,];

Declare a 10 by 10 by 10 array (1000 elements)
double cube[10, 10, 10];
8/18/2013 1:06 PM
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
Memory Allocation to Store an Array of
Text Boxes (VB)
8/18/2013 1:06 PM
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
Operations on a 2-Dimension Array
The syntax for using the GetLength method of a
rectangular array
arrayName.GetLength(dimensionindex)
Code that works with the numbers array
int
int
int
int
[,] numbers = { {1,2}, {3,4}, {5,6} };
numberOfRows = numbers.GetLength(0);
numberOfColumns = numbers.GetLength(1);
sumOfFirstRow = numbers[0,0]+ numbers[0,1];
8/18/2013 1:06 PM
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
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][];
numbers[0] = new int[2];
numbers[1] = new int[3];
numbers[2] = new int[1];
'
'
'
'
3
3
4
2
rows are declared
columns for 1st row
columns for 2nd row
columns for 3rd row
8/18/2013 1:06 PM
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]
numbers[0][1) = 2; numbers[1][1]
numbers[0][2) = 3; numbers[1][2]
]
numbers[1][3]
=
=
=
=
4;
5;
6;
7;
numbers[2][0] = 8;
numbers[2][1] = 9;
8/18/2013 1:06 PM
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
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
Common properties and methods of the Array class
Property
Length
Instance method
GetLength(dimension)
GetUpperBound(dimension)
Description
Gets the number of elements in all of
the dimensions of an array.
Description
Gets the number of elements in the
specified dimension of an array.
Gets the index of the last element in
the specified dimension of an array.
8/18/2013 1:06 PM
Common properties and methods of the Array class
(continued)
Static method
Copy(array1, array2, length)
BinarySearch(array, value)
Sort(array)
Description
Copies some or all of the values in
one array to another array.
Searches a one-dimensional array
that’s in ascending order for an
element with a specified value and
returns the index for that element.
Sorts the elements in a onedimensional array into ascending
order.
8/18/2013 1:06 PM