Random award question
There is no way to ensure that exactly 4 people win, and that all people have an equal likelihood of being chose.

For instance, suppose you see 100 people during from 8am-3pm, and have given out 3 awards.  Then, if 500 people all show up in the last hour, you have at most one more award to give out, so those people will have a much lower chance of winning.  Alternatively, suppose you see 100 people from 8am-3pm and have given out 0 awards.  Then, if 4 people show up the last hour, the only way to give out exactly 4 awards is to give each of them an award, so those people will have a much higher chance of winning.

As a result, there probably is no perfect solution -- you will just be trading off different kinds of imperfection.

One solution is to not give anyone an award, but that's not very useful.

A practical solution is probably to get some data beforehand on the estimated number of people who show up per day, and use that to choose the probability of winning for each person.  Once you've given out 4 awards, stop.  For instance, suppose on average 100 people show up per day.  Then as each person arrives, with probability $0.04$, given them an award.  If you hand out 4 awards, no one else gets one for the rest of that day.  That ensures that the expected number of awards handed out is a bit less than 4; that you won't hand out more than 4 awards; and that everyone's probability of winning is close to the same.

If you don't need to determine in real time whether each person has won, you can use reservoir sampling.