I dont remember what language it was but you could do random(1,10) or something like that and it would pick a number between 1 to 10, is there a way to do something like this in gdscript?

+27 votes

+67 votes

`randi()%10+1`

returns an `int`

from 1 to 10

`randf()*10.0+1.0`

returns a `float`

from 1.0 to 10.999999~

`rand_range(1,11)`

returns a `float`

from 1.0 to 10.999999~

`range(1,11)[randi()%range(1,11).size()]`

is a little ugly and less efficient but returns an `int`

from 1 to 10 without you having to do the math yourself (aka the 11+1 part) because all you need to do is set the range()

This answer has an important error. If you want to produce a real number in the interval [x,y[, in general you use:

```
(randf() * (y-x)) + x.
```

From 1 to 10, you have `randf() * 9 + 1`

. This is because `randf()`

can be 1 as maximum. In this case, you would obtain 9 + 1 = 10. In the case proposed by this answer, `randf() * 11 + 1`

, if by chance `randf()`

turns out to be greater than 0.8 you get something greater than 10. So, there is a 20% chance of having a wrong answer.

randi()%11+1 returns an int from 1 to **11**

If you someone needs a random int between 1 and 10, use:

randi()%**10**+1

+7 votes

As of Godot 3:

`randi() % 20`

returns an int from 0 to 19

`randi() % 20 + 1`

returns an int from 1 to 20

`randf()`

returns a float from 0 to 1

Unfortunately, the older style no longer seems to work.

+7 votes

The following code returns a random number, but it is the **same** number each time the script is executed:

```
var random_value = rand_range(1,10)
```

The following code gives you **different** random numbers each time the script is executed:

```
var random_generator = RandomNumberGenerator.new()
random_generator.randomize()
var random_value = random_generator.randf_range(1,10)
```

https://docs.godotengine.org/en/stable/classes/class_randomnumbergenerator.html

or simply:

```
randomize()
var random_value = rand_range(1,10)
```

+1 vote

I needed a rand_range(a, b) but with integers, also to work with negative numbers. I came up with this function.

```
func randi_range(from, to):
if from > to:
var old_from = from
from = to
to = old_from
return int(floor(rand_range(from , to + 1)))
```

0 votes

You can use key words like randomize for randomizing numbers from 0 to 2^32, rand*range for randomizing an specific range of numbers, for example rand*range(2, 20) will return 2,3,4,5,6...19 or 20. There also at options like randi () or randf but I think those are the more important. I’ll link rand_range since is the specific one in your case: https://docs.godotengine.org/es/stable/getting_started/scripting/c_sharp/c_sharp_differences.html?highlight=Rand_range#random-functions

+1 vote

var name = 0

func *ready():
rng.randomize()
name = rng.randi*range(1, 10)

The random number will be between 1 and 10.

+2 votes

Yea, the best way i found out how is this way:

```
var RNG = RandomNumberGenerator.new()
func _ready():
RNG.randomize
var rannum = RNG.randf_range([number], [number])
```

So that's the code. hopefully it helps!

0 votes

you could use the

`randf_range(0,10)`

if you want a float

`randi_range`

or if you want and int

(I think I wrote that right)

I dont think you need to use the `randomise()`

function, please correct me if I am wrong

+1 vote

Landed here wanting to find a basic Rand() function that can return a number between low and high. Supports OP original ask in addition to anyone looking for a custom low besides 1. This implementation supports negatives. It hits the low and high without going above or below.

```
var randNum = Rand(-10, 20)
func Rand(low, high):
return floor(rand_range(low, high + 1))
```

0 votes

In Godot 4, use randf_range(from, to) and randi_range(from, to). They each take a minimum and maximum value, but one is for floats and the other for integers.

- All categories
- Engine 34,019