Did a little test myself, now with the right range. The delays are to prevent Homey from killing the flow for running too often and to make sure the calculation is done when the result is counted:
https://homey.app/f/oXryER
https://homey.app/f/PjHyER
https://homey.app/f/CySyER
https://homey.app/f/zb0zER
https://homey.app/f/pH5zER
After 825 steps the division is: 197/212/205/211 and that is not that bad for this low a testcount. After 8782 steps the division is 2217/2163/2169/2233. Again, pretty good. So my conclusion is: if you do the range right, there’s nothing wrong with the random function. @Peter_Kawa, hope your family will now be able to trust Homey to pick who’ll feed the cat, and @Dalle do these flows give you enough of an idea how to build your announcements?
It will probably look something like this If you do not want to delay the announcement itself:
Flow 1: if this flow was started then let TextToSpeach cast variable NextAnnouncementText to a chromecast device,
and calculate variable NextAnnouncement to {{round(random(0.5,4.4999))}} with a delay of a 5 seconds
Flow 2: If variable NextAnnouncement changes and NextAnnouncement equals 1 then set variable NextAnnouncementText to text1
Flow 3: If variable NextAnnouncement changes and NextAnnouncement equals 2 then set variable NextAnnouncementText to text2
Flow 4: If variable NextAnnouncement changes and NextAnnouncement equals 3 then set variable NextAnnouncementText to text3
Flow 5: If variable NextAnnouncement changes and NextAnnouncement equals 4 then set variable NextAnnouncementText to text4
Note that the very first time you’ll have to set the text yourself or run the first flow once more, as the next announcement text is determined 5 seconds after the announcement was made. These delays are needed because Homey runs all cards at the same time and things may not happen in the right order. I used 5 seconds because I thought text to speach and casting would take some time, but you can probably safely set the delay much lower because the variable will probably be used only at the very start of the texttospeach card.