Yeah, I'm pretty sure that we can do a random event. Just remember to make sure that the flower is big enough for the lizard to get into...
I put together a little quick pseudocode for the puzzle logic (there's probably a couple ways to make this more efficient if I thought about it). Do you like 1 in 6 odds for there being a bug in any one of the flowers, or is that too low of a chance do you think? And how often should this puzzle be replayable, perhaps once a day?
if(the player has not triggered this puzzle too recently...)
then bridgeExtended = FALSE; (by default the bridge is not extended)
bugInFlower1, bugInFlower2, bugInFlower3 = FALSE; (by default there are no bugs in the flowers)
flower1, flower2, flower3 = FALSE; (by default the flowers are closed)
Get a random number, and convert it to an integer between 0-17 for 1 in 6 odds of there being a bug in a flower
if the random integer is 0, bugInFlower1 = TRUE; (There is a bug in flower 1)
if the random integer is 1, bugInflower2 = TRUE; (There is a bug in flower 2)
If the random integer is 2, bugInflower3 = TRUE; (There is a bug in flower 3)
If (player touches flower1)
flower1 = TRUE (Open flower)
If(player touches flower2)
flower2 = TRUE (Open flower)
If(player touches flower3)
flower3 = TRUE (Open flower)
If(player extends bridge)
then bridgeExtended = TRUE;
If(bugInFlower1 and bug 1 are both true, or flower2 and bug2 are true, or flower3 and bug3 are true, and bridgeExtended is FALSE)
Then play lizard noises
Else if(bugInFlower1 and flower1 are both true, or flower2 and bugInFlower2 are true, or flower3 and bugInFlower3 are true, and bridgeExtended is TRUE)
Then play animation of the lizard crossing bridge and eating the bug in flower 1, 2, or 3 as appropriate
Reset all variables to FALSE
Store the time at which the player successfully triggered this puzzle somewhere so that they can't play it again for some time.