Utilities » Random value generators

# Random value generators

In this section:

## Random Color

`Utils.randomColor()` is useful when any old color will do.

Calling `Utils.randomColor()` without arguments will return a randomly chosen color with 100% opacity.

``````layer = new Layer
backgroundColor: Utils.randomColor()``````

In the upcoming ‘Lotto numbers’ example project we give each circle a random color with 70% opacity.

``````circle = new Layer
backgroundColor: Utils.randomColor .7``````

## Random Number

`Utils.randomNumber()` will return a random number within a range that you specify.

``Utils.randomNumber a, b``

`a` — The lowest possible number.
`b` — The highest possible number.

The function does not return whole numbers; the result will have many decimals:

``````print Utils.randomNumber 1, 100
» 59.59754673670977``````

That’s why in the example project on the next page we pass Random Number’s result through 🛠 Round to get an integer.

``````circle = new Layer
html: Utils.round Utils.randomNumber 1, 59``````

## Lotto numbers example

This prototype will show six numbers between 1 and 59, generated by the Random Number utility.

The circles get their colors by calling Random Color with an opacity of 70%.

Some numbers may appear twice because the code doesn’t check for doubles.

## Random Image

`Utils.randomImage` will grab a random image for your layer from unsplash.com.

An example:

``````layerA = new Layer
image: Utils.randomImage()``````

Using it like this will download the biggest version of the image, though, and a 1024 by 1024 JPG is probably overkill for most layers.

It’s better to pass the function a layer, by calling it after you’ve created the layer. This will optimize the size of the downloaded image for the size of the layer, and also reuse the same image.

``````layerB = new Layer
layerB.image = Utils.randomImage layerB``````

The image is chosen randomly from a collection of ~30 preselected images. If you have a favorite, you can select it by passing the function a number instead of a layer.

``````layerC = new Layer
image: Utils.randomImage 5``````

But this will download a 1024 pixel image again since you can’t pass in a layer and a number at the same time (the function accepts only one parameter).

### Random Image example

``````# Unoptimized, will download a big (1024) image
layerA = new Layer
x: Align.center -250
y: Align.center
image: Utils.randomImage()``````
``````# Preferred use
layerB = new Layer
point: Align.center
layerB.image = Utils.randomImage layerA``````
``````# Selecting an image