Javadoc link

The Random service can create random messages with random parameters.  Any method accessable can be called at some interval with ranges of parameters.  For example, if you wanted a Servo to move at some interval between 1 and 5 seconds between 35 and 165.

random = Runtime.start('random','Random')
random.addRandom(1000, 5000, 'servo01', 'moveTo', random.intRange(35, 165))

 

Example of Web UI list of current random method events

random

The top switch can disable all random methods or each individual method cand be enabled or disabled.

 

Example code (from branch develop):
#file : Random.py (github)
#########################################
# Random.py
# description: Random message generator - sends messages
# at random intervales with random parameters
# categories: general
# more info @: http://myrobotlab.org/service/Random
#########################################
 
# start the service
python = runtime.start("python", "Python")
random = runtime.start("random", "Random")
clock = runtime.start("clock", "Clock")
 
 
def happy():
    print("i am happy")
 
 
def sad():
    print("i am sad")
 
 
def angry():
    print("i am angry")
 
 
# add a named random task
random.addRandom("random emotion", 1000, 2000, "python", "exec", "happy()", "sad()", "angry()")
 
 
# enable random events
random.enable()
 
 
def roll_dice(value):
    print("roll_dice " + str(value))
 
 
# roll the dice every 1 to 2 seonds
random.addRandom(1000, 2000, "python", "roll_dice", random.intRange(1, 6))
 
 
# add a complex dice
def roll_complex_dice(value):
    print("roll_complex_dice " + str(value))
 
 
# roll the complex dice every 1 to 2 seonds
random.addRandom(1000, 2000, "python", "roll_complex_dice", random.doubleRange(1, 6))
 
 
def random_color(value):
    print("random_color " + str(value))
 
 
# roll the dice every 1 to 2 seonds
random.addRandom(1000, 2000, "python", "random_color", random.setRange("red", "green", "blue", "yellow"))
 
 
# do a complex multi parameter, multi-type method
def kitchen_sink(dice, complex_dice, colors, names):
    print("kitchen_sink ", dice, complex_dice, colors, names)
 
 
random.addRandom(1000, 2000, "python", "kitchen_sink", random.intRange(1, 6), random.doubleRange(1, 6), random.setRange("red","green","blue","yellow"), random.setRange("bob","jane","fred","mary"))
 
# set the interval on a clock between 1000 and 8000
# if you look in the UI you can see the clock interval changing
random.addRandom(200, 500, "clock", "setInterval", random.intRange(1000, 8000))
 
# Chaos monkey clock starting and stopping !
random.addRandom(200, 500, "clock", "startClock")
random.addRandom(200, 500, "clock", "stopClock")
 
# disable single random event generator - must be explicit with name.method key
random.disable("python.roll_dice")
 
# you know longer should see the python.roll_dice event firing - since it was explicitly disabled
 
# stop events - but leave all random event data
# allows re-enabling
# random.disable()
 
# enable events
# random.enable()
 
# stop events and clear all random event ata
# random.purge()