This is probably random enough for your purposes - see formula below. I didn't explore multiple events on the same day but at the expense of making an even longer fomrula that can probably also be by introducing some
entropy from the date created field (assuming the events were not created via bulk import)
Script solution would be perfect solution for this but you would have to have the calendar embedded on a parent records for easy script injections.
Ask if you don't understand - short time today.
Calendar Color Formula:Case(Day([Date]),
1, "#afb26b",
2, "#ac5fd1",
3, "#43a829",
4, "#cf4aa3",
5, "#59cd5b",
6, "#6669cf",
7, "#b5c134",
8, "#944e8b",
9, "#6ea127",
10, "#df4c7d",
11, "#40ae60",
12, "#dd4653",
13, "#48cdac",
14, "#bb3d26",
15, "#4db6d8",
16, "#e27036",
17, "#6984c7",
18, "#d9a132",
19, "#d88dc7",
20, "#89c25b",
21, "#a5485a",
22, "#77bd87",
23, "#dd8079",
24, "#55842f",
25, "#df9b69",
26, "#2f8a72",
27, "#9a5a2c",
28, "#447a40",
29, "#a78236",
30, "#9ba036",
31, "#6b6b25"
)