0% found this document useful (0 votes)
4 views17 pages

13-ch05-2-random

Chapter 5 of 'Building Java Programs' discusses random numbers, including concepts of randomness and pseudo-randomness, and introduces the Random class in Java for generating random integers and doubles. It provides examples of generating random numbers within specified ranges and includes programming exercises for simulating dice rolls and creating random rectangles. Additionally, it covers the use of Point objects and presents a game that tests users on their addition skills with randomly generated problems.

Uploaded by

Gaurav Sharma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views17 pages

13-ch05-2-random

Chapter 5 of 'Building Java Programs' discusses random numbers, including concepts of randomness and pseudo-randomness, and introduces the Random class in Java for generating random integers and doubles. It provides examples of generating random numbers within specified ranges and includes programming exercises for simulating dice rolls and creating random rectangles. Additionally, it covers the use of Point objects and presents a game that tests users on their addition skills with randomly generated problems.

Uploaded by

Gaurav Sharma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 17

Building Java Programs

Chapter 5
Lecture 5-2: Random Numbers

reading: 5.1, 5.6

1
http://xkcd.com/221/

2
Randomness
 Lack of predictability: don't know what's coming next

 Random process: outcomes do not follow a deterministic


pattern (math, statistics, probability)

 Lack of bias or correlation (statistics)

 Relevant in lots of fields


 Genetic mutations (biology)
 Quantum processes (physics)
 Random walk hypothesis (finance)
 Cryptography (computer science)
 Game theory (mathematics)
 Determinism (religion)
3
Pseudo-Randomness
Computers generate numbers in a predictable way using a
mathematical formula

Parameters may include current time, mouse position


 In practice, hard to predict or replicate

True randomness uses natural processes


 Atmospheric noise (http://www.random.org/)
 Lava lamps (patent #5732138)
 Radioactive decay

4
The Random class
A Random object generates pseudo-random numbers.
 Class Random is found in the java.util package.
import java.util.*;
Method name Description
nextInt() returns a random integer
nextInt(max) returns a random integer in the range [0, max)
in other words, 0 to max-1 inclusive
nextDouble() returns a random real number in the range [0.0, 1.0)

 Example:

Random rand = new Random();


int randomNumber = rand.nextInt(10); // 0-9

5
Generating random numbers
Common usage: to get a random number from 1 to N

int n = rand.nextInt(20) + 1; // 1-20 inclusive

To get a number in arbitrary range [min, max] inclusive:

name.nextInt(size of range) + min

 Where size of range is (max - min + 1)

 Example: A random integer between 4 and 10 inclusive:

int n = rand.nextInt(7) + 4;

6
Random questions
Given the following declaration, how would you get:
Random rand = new Random();

 A random number between 1 and 47 inclusive?


int random1 = rand.nextInt(47) + 1;

 A random number between 23 and 30 inclusive?


int random2 = rand.nextInt(8) + 23;

 A random even number between 4 and 12 inclusive?


int random3 = rand.nextInt(5) * 2 + 4;

7
Random and other types
nextDouble method returns a double between 0.0 - 1.0
 Example: Get a random GPA value between 1.5 and 4.0:
double randomGpa = rand.nextDouble() * 2.5 + 1.5;

Any set of possible values can be mapped to integers


 code to randomly play Rock-Paper-Scissors:

int r = rand.nextInt(3);
if (r == 0) {
System.out.println("Rock");
} else if (r == 1) {
System.out.println("Paper");
} else { // r == 2
System.out.println("Scissors");
}

8
Random question
Write a program that simulates rolling of two 6-sided dice
until their combined result comes up as 7.
2 + 4 = 6
3 + 5 = 8
5 + 6 = 11
1 + 1 = 2
4 + 3 = 7
You won after 5 tries!

9
Random answer
// Rolls two dice until a sum of 7 is reached.
import java.util.*;
public class Dice {
public static void main(String[] args) {
Random rand = new Random();
int tries = 0;
int sum = 0;
while (sum != 7) {
// roll the dice once
int roll1 = rand.nextInt(6) + 1;
int roll2 = rand.nextInt(6) + 1;
sum = roll1 + roll2;
System.out.println(roll1 + " + " + roll2 + " = " + sum);
tries++;
}
System.out.println("You won after " + tries + " tries!");
}
}

10
Point objects
Java has a class of objects named Point.
 They store two values, an (x, y) pair, in a single variable.
 They have useful methods we can call in our programs.
 To use Point, you must write:
import java.awt.*;

Two ways to construct a Point object:

Point name = new Point(x, y);


Point name = new Point(); // the origin (0, 0)
 Examples:
Point p1 = new Point(5, -2);
Point p2 = new Point();

11
Point data and methods
Data stored in each Point object:
Field name Description
x the point's x-coordinate
y the point's y-coordinate

Methods of each Point object:


Method name Description
distance(p) how far away the point is from point p
setLocation(x, y) sets the point's x and y to the given values
translate(dx, dy) adjusts the point's x and y by the given amounts

12
Random drawing question
Write a program that draws 100x100 rectangles at random
(x, y) positions within a 500x500 DrawingPanel.

The rectangles' color should be randomly chosen between


red, green, and blue.

Print how far away the upper left corner of the rectangle is
from the middle of the screen

13
Random drawing question
Modify the rectangle program to draw randomly placed/
colored 10x10 rectangles until it draws 20 red ones.
 Break up your program using static methods.
 Print a line of output each time a red rectangle is drawn:

Drew red #1 at (120, 312)


Drew red #2 at (285, 337)
Drew red #3 at (410, 251)
Drew red #4 at (15, 372)
Drew red #5 at (61, 248)

 Make the DrawingPanel animate by calling its sleep method


between each rectangle drawn. 14
Random question
Write a program that plays an adding game.
 Ask user to solve random adding problems with 2-5 numbers.
 The user gets 1 point for a correct answer, 0 for incorrect.
 The program stops after 3 incorrect answers.

4 + 10 + 3 + 10 = 27
9 + 2 = 11
8 + 6 + 7 + 9 = 25
Wrong! The answer was 30
5 + 9 = 13
Wrong! The answer was 14
4 + 9 + 9 = 22
3 + 1 + 7 + 2 = 13
4 + 2 + 10 + 9 + 7 = 42
Wrong! The answer was 32
You earned 4 total points.

15
Random answer
// Asks the user to do adding problems and scores them.
import java.util.*;

public class AddingGame {


public static void main(String[] args) {
Scanner console = new Scanner(System.in);
Random rand = new Random();

// play until user gets 3 wrong


int points = 0;
int wrong = 0;
while (wrong < 3) {
int result = play(console, rand); // play one game
if (result == 0) {
wrong++;
} else {
points++;
}
}

System.out.println("You earned " + points + " total points.");


}

16
Random answer 2
...
// Builds one addition problem and presents it to the user.
// Returns 1 point if you get it right, 0 if wrong.
public static int play(Scanner console, Random rand) {
// print the operands being added, and sum them
int operands = rand.nextInt(4) + 2;
int sum = rand.nextInt(10) + 1;
System.out.print(sum);
for (int i = 2; i <= operands; i++) {
int n = rand.nextInt(10) + 1;
sum += n;
System.out.print(" + " + n);
}
System.out.print(" = ");
// read user's guess and report whether it was correct
int guess = console.nextInt();
if (guess == sum) {
return 1;
} else {
System.out.println("Wrong! The answer was " + total);
return 0;
}
}
} 17

You might also like