# Lecture for January 30

## Random Number Generator

One of the ways you can do a random number generator is through this method:

Import a class called random 

```java
import java.util.Random;
```

Then you need to create a `Random` object

```java
Random rand = new Random();
```

After this you can call the  `nextInt()` method to get a random number between 0 and $2^{32}$

```java
int randInt = rand.nextInt();
```

If you don't want a random number between 0 and $2^{32}$ but instead to another maximum value, then you can call  the `nextInt` method inserting the max integer as a parameter.

Random Integer from 0-10 (not including 10)

```java
int randInt2 = rand.nextInt(10);
```

## Output

We have already encountered `System.out.println` and `System.out.print` but let us go over the differences again.

`System.out.println()` prints the contents inside the parenthesis and appends a newline character afterwards so that the next output is on a new line

`System.out.print()` prints the contents inside the parenthesis and does not output a newline character



### Formatting Output

If you want more control on how your output is displayed, it is recommended that you use `System.out.printf` to format your output

First, you need to specify your type using the % instruction

- d for integer
- f for decimal

Example:

```java
int sum = 50;
System.out.printf("Total = %d", sum);
```

This outputs 

```reS
Total = 50
```

Notice here that there is no concatenation required like the previous two methods, instead you insert the variables as parameters

Let us deconstruct the % instruction

% __ __ . __ __

The first underline is the + - 0 space (sometimes we want to pad the money with zeros)

The second underline is the width of the text

The third underline is the number of decimal places

The the final underline is the specifier `f` for decimal and `d` for integer

**Example**

```java
double amount = 0.5;
System.out.printf("Total Due: %0.2f")
```

This outputs

```reStructuredText
Total Due: 0.50
```

