Most mining implementations, solo or pooled, will start from 0 and increment the nonce value. In 2018 (and in recent years) ASIC miners are so fast that all possible nonce values are tried in practically no time. To get around this nonce-space exhaustion, the extraNonce value in the coinbase tx is updated once the nonce space has run out.
A pool can be thought of as multiple solo miners working in parallel.
Since ASICs are so fast, it doesn't make sense to have every worked mining on the same block template with only different nonce ranges (worker one on nonce 0-99, worker 2 on 100-199 etc.), since they will all quickly exhaust their own nonce space and start overlapping.
Instead, mining pools will send different block templates to each (or the majority, at least) of workers. The only difference is usually some transactions, which then change the merkle root. Thus, all workers are effectively mining a unique block, but all at the same height. If any worker solves a block, the pool will win that block.
Lastly, in addition to the nonce, the timestamp value is also updated every second, which allows you to retry the nonce space once again, since the header has changed.