You can use arithmetic operators on patterns, or the scale function (they do the same thing), for example: for a continuous range of values from 6 to 8 (rand * 2 + 6) or (scale 6 8 rand) for just 6,7,8 (irand * 3 + 6) or (choose [6,7,8]) if you want to blend this with your nonrandom pattern I think you'll need something like stack |+| speed (stack ["[2.3, 5, 6, 7, 0.7]", choose [6,7,8]])