1 | initial version |

This is because `randint`

returns a Python `int`

and not a Sage `Integer`

, and the division of two Python ints leads to an int:

```
sage: type(randint(2,10))
<type 'int'>
sage: int(5) / int(3)
1
```

When you write `1/a`

, since the `1`

is a Sage integer, then the coercion makes the division happen in the set od Sage integers, this explains why you got a rational number:

```
sage: type(1)
<type 'sage.rings.integer.Integer'>
sage: get_coercion_model().common_parent(1,int(3))
Integer Ring
```

If you want to get random Sage integers, you can either convert the `int`

into Sage integers:

```
sage: a = ZZ(randint(2,10))
sage: a
5
sage: type(a)
<type 'sage.rings.integer.Integer'>
```

Or, you can ask Sage to produce a random integer:

```
sage: a = ZZ.random_element(2,11)
sage: a
9
sage: type(a)
<type 'sage.rings.integer.Integer'>
```

Note that i replaced the 10 by 11, since in the `random_element`

of Sage, the right bound is excluded, while it is not with the `randint`

function.

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.