In this code below I keep getting the same value for nextRandomIndexOf:
When I first compile and run the Sound the first time I press the !Randomise button in the VCS a get a random value but every subsequent time I press the button I get the same value again.

If I change the second occurrance of !Randomise to !Gate, it kind of works but not reliably. That is if I change the second to last line to:
(!Randomise true: (register @< 0) <+ (!Gate nextRandomElementOf: values) false: nil),
it does change when I press !Randomise... fairly often but not 100%.
And if I align !Randomise with !Gate it stops working again:
((!Randomise alignWith: !Gate) true: (register @< 0) <+ (!Gate nextRandomElementOf: values) false: nil),
What should I put infront of nextRandomElementOf: to make it give a new random value every time I click on the !Randomise button?
Here's the whole code for cutting and pasting:
| register registerSize registerValue shiftExpression values |
"The size of the shift register"
registerSize := 8.
"The set of possible register values"
values := #(3 {5/4} {4/3} {3/2} {9/5} 2 {18/8} {12/5}).
register := EventVariable new size: registerSize.
registerValue := EventVariable new initialValue: 0.
"construct the expression that shifts the register by one place"
shiftExpression := registerValue <+ (register @< 0).
shiftExpression := (0 to: (registerSize - 2)) inject: shiftExpression into: [:expr :i|
(expr, ((register @< i) <+ (register @< (i + 1))))].
shiftExpression := shiftExpression, ((register @< (registerSize -1)) <+ registerValue).
(!Gate switchedOn evaluate: shiftExpression),
(!Randomise true: (register @< 0) <+ (!Randomise nextRandomElementOf: values) false: nil),
(register @< 0).