You can use a dummy X10 address to insure that the random event occurs only once. Define an X10 address that is not used by any of your devices. Use the X10 status of Off as an Anded Condition controlling the random Action. When the Action is triggered use one of the Effects to turn the X10 address On. Once the X10 address is On the random Action cannot trigger again. Turn the X10 address Off with a time based Action a few minutes before the start of the 20:00-24:00 window. This technique will insure that the lights will turn On only once during that window.
I do not know how to generate a random event that would occur the first time randomly across a 4 hour window. Some combination of a random interval Condition Anded with a Window Condition will generate a random event within that 4 hour window but I have never seen any random event that occurs the first time randomly across a 4 hour span. Perhaps development will have some helpful advice.