# Loops/Break

Loops/Break
You are encouraged to solve this task according to the task description, using any language you may know.
Show a loop which prints two random numbers (newly generated each loop) from 0 to 19 (inclusive). If the first number is 10, print it, stop the loop, and do not generate the second. Otherwise, loop forever.

procedure Test_Loop_Break is

```  type Value_Type is range 1..20;
package Random_Values is new Ada.Numerics.Discrete_Random (Value_Type);
use Random_Values;
Dice : Generator;
A, B : Value_Type;
```

begin

```  loop
A := Random (Dice);
Put_Line (Value_Type'Image (A));
exit when A = 10;
B := Random (Dice);
Put_Line (Value_Type'Image (B));
end loop;
```

end Test_Loop_Break; </lang>

## AutoHotkey

<lang AutoHotkey> loop { Random, var, 0, 19 output = %output%`n%var% if (var = 10) break Random, var, 0, 19 output = %output%`n%var% } msgbox % output </lang>

## BASIC

Works with: QuickBasic version 4.5

<lang qbasic>do

```   a = int(rnd * 20)
print a
if a = 10 then exit loop 'EXIT FOR works the same inside FOR loops
b = int(rnd * 20)
print b
```

loop</lang>

## Common Lisp

<lang lisp>(loop

```   (setq a (random 20))
(print a)
(if (= a 10)
(return))
(setq b (random 20))
(print b))</lang>
```

## Forth

<lang forth>include random.fs

main
``` begin  20 random dup . 10 <>
while  20 random .
repeat ;
```

\ use LEAVE to break out of a counted loop

main
``` 100 0 do
i random dup .
10 = if leave then
i random .
loop ;
```

</lang>

## Fortran

Works with: Fortran version 90 and later

<lang fortran>program Example

``` implicit none
```
``` real :: r
integer :: a, b
```
``` do
call random_number(r)
a = int(r * 20)
write(*,*) a
if (a == 10) exit
call random_number(r)
b = int(r * 20)
write(*,*) b
end do
```

end program Example</lang>

## Java

<lang java>import java.util.Random;

Random rand = new Random(); while(true){

```   int a = rand.nextInt(20);
System.out.println(a);
if(a == 10) break;
int b = rand.nextInt(20);
System.out.println(b);
```

}</lang>

## Perl

<lang perl>while (1) {

```   my \$a = int(rand(20));
print "\$a\n";
if (\$a == 10) {
last;
}
my \$b = int(rand(20));
print "\$b\n";
```

}</lang>

## PHP

<lang php>while (true) {

```   \$a = rand(0,19);
echo "\$a\n";
if (\$a == 10)
break;
\$b = rand(0,19);
echo "\$b\n";
```

}</lang>

## Python

<lang python>import random

while True:

```   a = random.randrange(20)
print a
if a == 10:
break
b = random.randrange(20)
print b</lang>
```

## Ruby

<lang ruby>loop do

```   a = rand(20)
puts a
if a == 10
break
end
b = rand(20)
puts b
```

end</lang>

## Tcl

<lang tcl>while true {

```   set a [expr int(20*rand())]
puts \$a
if {\$a == 10} {
break
}
set b [expr int(20*rand())]
puts \$b
```

}</lang>