# [JavaScript (Node.js)], 72 bytes

<!-- language-all: lang-javascript -->

    s=>Buffer(s).map(c=>Math.random()<n/l--/2?(n-=2,c-32):c,n=l=s.length)+''

[Try it online!][TIO-lutm4iwj]

[JavaScript (Node.js)]: https://nodejs.org
[TIO-lutm4iwj]: https://tio.run/##VVDLboMwELzzFVYu8QpwAr1BTKTcq34A4uAYG5yAHWGDKiG@nVISUnVPs6OZ2ceNDczyTj1cqE0pZklnS7NLL6XosAXSsgfmNPtkriYd06VpMZz0oQnDQ3zGOqRxwMOPGBIeaNpQSxqhK1eDv9/P3PTaIYrGKfWk6bCix1SdouNaqfJ9GD2ELJV4x668FLKqd5Au1GrMbUE3cN6AHyVR6k3eFv11vQnuCLNWVRqPU4AIIS9SaNcpYfGqBWJN5/DzIJzfAzQUgGiG8Ijye5GgAU0AsARraxpBGlO9jN7AGvs3aun6d@g/@fqjVmm8rPDrgQA9Kfb9pmD@AQ "JavaScript (Node.js) – Try It Online"

Basic idea: To Choose \$n\$ items from \$l\$ candidates, each item have \$\frac{n}{l}\$ probability to be chosen. And once the first item is chosen, we need to choose \$n-1\$ items from remaining \$l-1\$ candidates. If the first item is not chosen, we need to choose \$n\$ items from remaining \$l-1\$ candidates.