JavaScript (ES6), 133 bytes
f=N=>(F=n=>n<30?F[k=n%5]^(F[k]|=1<<(v=Math.random()*15))?(n-17?"BINGO"[n]||k*15-~v:'free')+`
`[k>>2]+F(n+1):F(n):--N?`
`+f(N):'')(0)
Arnauld
- 205.5k
- 21
- 187
- 670
Stack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.
Visit Stack Exchangef=N=>(F=n=>n<30?F[k=n%5]^(F[k]|=1<<(v=Math.random()*15))?(n-17?"BINGO"[n]||k*15-~v:'free')+`
`[k>>2]+F(n+1):F(n):--N?`
`+f(N):'')(0)