Python 2, 231 222 216 bytes
import random
import datetime
t=datetime.date.today()
d=[" "+(((`x`,"[ ]")[x<t.day],"[@]")[x==t.day],`x`)[t.month<12and t.day<26]for x in random.sample(range(1,26),25)]
while d:print'\n'+' '.join(d[0:5])+'\n';d=d[5:]
This feels like it should be a lot shorter.