JavaScript (ES6), 139 bytes
f=N=>(F=n=>n<30?(g=_=>F[k=n%5]^(F[k]|=1<<(v=Math.random()*15))?n-17?"BINGO"[n]||k*15-~v:'free':g())()+`
`[k>>2]+F(n+1):--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?(g=_=>F[k=n%5]^(F[k]|=1<<(v=Math.random()*15))?n-17?"BINGO"[n]||k*15-~v:'free':g())()+`
`[k>>2]+F(n+1):--N?`
`+f(N):'')(0)