I agree with you that in a mining pool you need a much higher hashrate, and only ASICs have that.
Now let me explain how mining actually works.
The script/program has to find the correct nonce that goes from zero to 4.3B hashes:
def miner(version, prev_hash, merkle_root, time, bits_int, diffInBytes, nonce):
header = (struct.pack("<L", version)+
codecs.decode(prev_hash, "hex")[::-1] +
codecs.decode(merkle_root, "hex")[::-1] +
struct.pack("<L", time) +
struct.pack("<L", bits_int) +
struct.pack("<L", (nonce+start_nonce) % 2**32))
digest = hashlib.sha256(header).digest()
reversedDigest = hashlib.sha256(digest).digest()[::-1]
if (reversedDigest < (diffInBytes): block mined...
All Bitcoin mining, whether by ASIC, CPU, CUDA...
relies on luck in correctly matching transactions, adding your receiving transaction, building Merkle to test the 4.3 billion nonces,
and If you are lucky enough to have correct time, transactions, and nonce with the sha256double:
if it is lower than the network difficulty, you have the mined block (this explanation is very generic).
One asic mining solo (have 99.99% win a block), only in pool you have a chance.
Now, with a simple machine, if you're lucky enough to have the block and find the nonce quickly that satisfies the network difficulty,
there's a very low, low, low probability.
We don't know if it was a nerdminer with some kh/s that solved the block; it's in a pool.
Because I don't have any ASIC, I'm left with no choice but to use my personal node with my software to have a chance/a lottery,
because with weak power I'll never have a chance to mine a pool where my competitors have an ASIC and a powerful hashrate.