People often look at me with disbelief in their eyes when I start going on about determinism in random events. I'm not exactly certain why people at large have such a difficult time understanding that a series of random events can amount to a measurable and predictable outcome.
Let's take evolution as an example. There are many reasons as to why it's deterministic because there's obviously many similiraties between living organisms. For example all vertebraes have a heart and such. Why? Well because the heart is the ultimate blood pumping device for this kind of animal. Why does everyone have ears based on the same principles (thin vibrating membrane and so on)? Because it just works.
But then, if evolution is random as so many people tend to believe, how is it that time and again it comes to the same solutions to similar problems? Wouldn't a completely random process create MUCH more variation? Well yes, so evolution cannot be random.
But isn't it that mutations are random you say? Well yes, they are. So how is it that evolution can be deterministic then?
It's really quite simple. Evolution isn't a process, it's actually two intetwined processes. There's mutation, which is random and then there's natural selection, which is selective. Together they form a process that through random events reaches a perfect solution.
Because people still had a hard time understanding me I created a short algorithm that displays a dumbed down process of evolution on real numbers. It's based on units with ten children each. The way it works is actually fairly simple. It starts with a single unit that is a number 1. Then produces its ten children by applying adding a random number between -0.300 and 0.300. There is a 50% chance of this delta being negative. Once the ten children are produced it applies the same "breed" function to those that are nearer the ideal number (1000.000 in my case). This is to display natural selection which favors those that are better to those that are worse. Within 6600 generations this algorithm became such that all still living units were within 0.3 from the ideal and if I kept it running for long enough the population would probably die out as it couldn't improve anymore. Real evolution solves this by always changing the ideal.
So you see, a random process, by help of a selective process, can easily become deterministical and move towards a "goal".
Continue reading about A random deterministic process
Semantically similar articles hand-picked by GPT-4
- Haskell and randomness
- Evolving a poem with an hour of python hacking
- Livecoding #38 - A faux AI that writes JavaScript
- Complex vs. complicated
- Why I don't have a 5 year plan
Learned something new?
Read more Software Engineering Lessons from Production
I write articles with real insight into the career and skills of a modern software engineer. "Raw and honest from the heart!" as one reader described them. Fueled by lessons learned over 20 years of building production code for side-projects, small businesses, and hyper growth startups. Both successful and not.
Subscribe below 👇
Software Engineering Lessons from Production
Join Swizec's Newsletter and get insightful emails 💌 on mindsets, tactics, and technical skills for your career. Real lessons from building production software. No bullshit.
"Man, love your simple writing! Yours is the only newsletter I open and only blog that I give a fuck to read & scroll till the end. And wow always take away lessons with me. Inspiring! And very relatable. 👌"
Have a burning question that you think I can answer? Hit me up on twitter and I'll do my best.
Who am I and who do I help? I'm Swizec Teller and I turn coders into engineers with "Raw and honest from the heart!" writing. No bullshit. Real insights into the career and skills of a modern software engineer.
Want to become a true senior engineer? Take ownership, have autonomy, and be a force multiplier on your team. The Senior Engineer Mindset ebook can help 👉 swizec.com/senior-mindset. These are the shifts in mindset that unlocked my career.
Curious about Serverless and the modern backend? Check out Serverless Handbook, for frontend engineers 👉 ServerlessHandbook.dev
Want to Stop copy pasting D3 examples and create data visualizations of your own? Learn how to build scalable dataviz React components your whole team can understand with React for Data Visualization
Want to get my best emails on JavaScript, React, Serverless, Fullstack Web, or Indie Hacking? Check out swizec.com/collections
Did someone amazing share this letter with you? Wonderful! You can sign up for my weekly letters for software engineers on their path to greatness, here: swizec.com/blog
Want to brush up on your modern JavaScript syntax? Check out my interactive cheatsheet: es6cheatsheet.com
By the way, just in case no one has told you it yet today: I love and appreciate you for who you are ❤️