Yes, you just need to get random numbers that are integers. Builder imports the `randint()`

function from `numpy.random`

, which is suitable for this purpose:

https://docs.scipy.org/doc/numpy-1.10.4/reference/generated/numpy.random.randint.html

For example, put code like this in the `Begin experiment`

tab:

```
# define whatever parameters are relevant to you:
min_duration = 10 # number of frames
max_duration = 60 # e.g. 1 second at 60 Hz
number_of_trials = 100 # number of ITIs needed
# get an array of random integers:
ITIs = randint(low= min_duration, high=max_duration + 1, size=number _of_trials)
# convert from a numpy array to a standard Python list if preferred:
ITIs = list(ITIs)
```

And then at the beginning of every trial, you’ll need to get the next ITI value for use, so put this in the `Begin routine`

tab:

```
# get the next ITI (assuming they are in a list):
current_ITI = ITIs.pop()
# manually record the ITI in the data for this trial:
thisExp.addData('ITI', current_ITI)
```

Put this code component above any other components that need access to the `current_ITI`

variable, so that it gets updated prior to being used by them. Then just put `$current_ITI`

in the frame duration field(s) of any relevant component(s) (and set that field to update on every routine).