r/DougDoug

Rest in peace Rosa

I just watched the video where we discovered that rosa died and i heared abt rosa story and how she raised a bunch of sea otters and now i am sad, and my love for sea otters has grown alot, love you rosa may you swim in the sea above us.

reddit.com
u/Th3ena — 9 hours ago

"Elmo understands its rough when when your parents get divorced. Elmo knows its even harder when you know its because of you."

u/Positive-Ad545 — 1 day ago

Happy 250th birthday to America! Here’s Doug reading the Declaration of Independence after drinking hot sauce to celebrate this occasion!

u/Alive_Ad_6277 — 1 day ago
▲ 620 r/DougDoug

Love when chat messages are being pulled forward even tho the chat is not visible

u/KOSTER07 — 3 days ago
▲ 101 r/DougDoug

I ran 15000 simulations of DougDoug's timer. I don't really know why.

Fun facts:

- On average, the timer will hit 0 in about an hour, assuming the timer doesn't explode (the "Avg real (hit zero) stat). Doug's timer lasted for 2 hours 45 min, so he's (sorta) proven statistically* unlucky. Should have prayed to the bee gods more 🐝.

- There was an 8.3% chance his timer would have exceeded 24 hours. A believer can believe

- I tried this simulation with a low cap of 24 hours (in the above picture), but also with higher caps of 100 hours; most stats remain more or less the same (except for the average and standard deviation, of course, but that's going to get blown out by the capped timers either way)

If you have a basic Python setup (you can ask your favourite AI to help set this up for you as well), you can try this out as well. Just follow the instructions in the README.

https://github.com/ThatAmuzak/DougDougTimerSimulations.git

Be warned that this is horribly unoptimized code, and I'm not accepting any issues or PRs; this is a throwaway project. It takes around a minute or so on a half-decent laptop for 15k runs

Why did I do any of this?

---

* For those of you stats nerds about to yell p-values and effect sizes, yes, he's not actually proven in a kosher statistics manner. You could theoretically compute the empirical p-value test and a non-parametric z-score, but I don't have the patience for that. If any of this makes sense to you, the code is up there; you should be able to modify it to save and export the dataframe to R to run your tests

u/Weak_Consequence_304 — 2 days ago
▲ 98 r/DougDoug+1 crossposts

DougDoug/Failboat Miis

These are my own creation.

Pyjama Sam, Father, Bald at 2D platformers, Chatty Dee.

If you have any advice on how I could improve them, let me know.

u/NarwhalSlight2130 — 3 days ago

DougDoug on his way to sacrifice another Sam to High Demon Elgim.

All these Miis are my own creation.

u/NarwhalSlight2130 — 3 days ago

AI Invasion Config

Does anybody know what or if Doug had special notes or instructions for NovelAI for the AI Invasion series? I tried playing with it, but it always ends up way less creative and entertaining than the videos.

reddit.com
u/lndle — 2 days ago

I made a script to simulate dougdoug's 10 minute timer in his latest video

After 250000 simulations, I found that the average time the 10 minute timer took to finish was 237,545,427,080,684.16 real-world seconds, which is equivalent to 7,527,514 years.

Some other statistics:

Median Time: 1,846.97 seconds

Shortest Run: 2.00 seconds

Longest Run: 106,691,973,808,757,744.00 real world seconds, which is 3,380,934,058 years (approximately a quarter of the age of the universe)

The reason why the average time is so much larger than the median is because of extreme "unlucky" cases where the timer or the time it takes for the timer to tick repeatedly doubles which is also why the longest run is so long

Anyways I am not sure if the script is actually correct but you can try it yourself below (disclaimer: I myself did not write the script I just prompted an ai):

import random
import time
import statistics


def run_simulation(max_wall_time, global_start_time):
    timer_time = 10 * 60  # Starts at 10 minutes (600 seconds)
    real_time = 0.0
    tick_length = 1.0  # Tracks real-world seconds per timer second
    steps = 0

    while timer_time > 0:
        # Safety kill-switch for the wall-clock (checks every 10k steps)
        if steps % 10000 == 0:
            if time.time() - global_start_time > max_wall_time:
                return None
        steps += 1

        r = random.random()

        if r < 0.05:
            # 5% chance: add 1 second
            timer_time += 1
            real_time += tick_length
        elif r < 0.06:
            # 1% chance: add 1 minute
            timer_time += 60
            real_time += tick_length
        elif r < 0.07:
            # 1% chance: remove 1 minute
            timer_time -= 60
            real_time += tick_length
        elif r < 0.12:
            # 5% chance: freezes for 5 timer-seconds
            real_time += 5.0 * tick_length
        elif r < 0.13:
            # 1% chance: doubles the amount of time left
            timer_time *= 2
            real_time += tick_length
        elif r < 0.14:
            # 1% chance: halves the amount of time left
            timer_time //= 2
            real_time += tick_length
        elif r < 0.15:
            # 1% chance: seconds and minutes swap (discarding hours)
            m = (timer_time % 3600) // 60
            s = timer_time % 60
            timer_time = s * 60 + m
            real_time += tick_length
        elif r < 0.16:
            # 1% chance: round to the nearest minute up or down
            m = timer_time // 60
            s = timer_time % 60
            if s >= 30:
                timer_time = (m + 1) * 60
            else:
                timer_time = m * 60
            real_time += tick_length
        elif r < 0.17:
            # 1% chance: timer ticks twice as fast (tick length halves)
            tick_length /= 2.0
            timer_time -= 1
            real_time += tick_length
        elif r < 0.18:
            # 1% chance: timer ticks twice as long (tick length doubles)
            tick_length *= 2.0
            timer_time -= 1
            real_time += tick_length
        else:
            # 82% chance: timer decreases normally
            timer_time -= 1
            real_time += tick_length

        if timer_time < 0:
            timer_time = 0

    return real_time


def main():
    TARGET_SIMULATIONS = 250000
    MAX_WALL_TIME = 10 * 60  # 10 minutes max real-time processing limit

    global_start_time = time.time()
    results = []

    print(f"Starting simulation run... (Target: {TARGET_SIMULATIONS:,} simulations)")
    print(f"Script will automatically terminate after 10 minutes.")
    print("-" * 50)

    for i in range(TARGET_SIMULATIONS):
        if time.time() - global_start_time > MAX_WALL_TIME:
            print("\n[!] 10-Minute Timeout Reached! Stopping early.")
            break

        sim_result = run_simulation(MAX_WALL_TIME, global_start_time)

        if sim_result is None:
            print("\n[!] 10-Minute Timeout Reached inside a simulation loop! Stopping early.")
            break

        results.append(sim_result)

        if (i + 1) % 25000 == 0:
            elapsed = time.time() - global_start_time
            print(f"Completed {i + 1:,} / {TARGET_SIMULATIONS:,} simulations... (Elapsed: {elapsed:.2f}s)")

    if len(results) > 0:
        expected_value = statistics.mean(results)
        median_value = statistics.median(results)
        max_value = max(results)
        min_value = min(results)

        print("\n" + "=" * 50)
        print("SIMULATION RESULTS")
        print("=" * 50)
        print(f"Total Simulations Run : {len(results):,}")
        print(f"Expected Value (Mean) : {expected_value:,.2f} real-world seconds")
        print(f"Median Time           : {median_value:,.2f} seconds")
        print(f"Shortest Run          : {min_value:,.2f} seconds")
        print(f"Longest Run           : {max_value:,.2f} seconds")
    else:
        print("No simulations completed in time.")


if __name__ == "__main__":
    main()import random
import time
import statistics


def run_simulation(max_wall_time, global_start_time):
    timer_time = 10 * 60  # Starts at 10 minutes (600 seconds)
    real_time = 0.0
    tick_length = 1.0  # Tracks real-world seconds per timer second
    steps = 0

    while timer_time > 0:
        # Safety kill-switch for the wall-clock (checks every 10k steps)
        if steps % 10000 == 0:
            if time.time() - global_start_time > max_wall_time:
                return None
        steps += 1

        r = random.random()

        if r < 0.05:
            # 5% chance: add 1 second
            timer_time += 1
            real_time += tick_length
        elif r < 0.06:
            # 1% chance: add 1 minute
            timer_time += 60
            real_time += tick_length
        elif r < 0.07:
            # 1% chance: remove 1 minute
            timer_time -= 60
            real_time += tick_length
        elif r < 0.12:
            # 5% chance: freezes for 5 timer-seconds
            real_time += 5.0 * tick_length
        elif r < 0.13:
            # 1% chance: doubles the amount of time left
            timer_time *= 2
            real_time += tick_length
        elif r < 0.14:
            # 1% chance: halves the amount of time left
            timer_time //= 2
            real_time += tick_length
        elif r < 0.15:
            # 1% chance: seconds and minutes swap (discarding hours)
            m = (timer_time % 3600) // 60
            s = timer_time % 60
            timer_time = s * 60 + m
            real_time += tick_length
        elif r < 0.16:
            # 1% chance: round to the nearest minute up or down
            m = timer_time // 60
            s = timer_time % 60
            if s >= 30:
                timer_time = (m + 1) * 60
            else:
                timer_time = m * 60
            real_time += tick_length
        elif r < 0.17:
            # 1% chance: timer ticks twice as fast (tick length halves)
            tick_length /= 2.0
            timer_time -= 1
            real_time += tick_length
        elif r < 0.18:
            # 1% chance: timer ticks twice as long (tick length doubles)
            tick_length *= 2.0
            timer_time -= 1
            real_time += tick_length
        else:
            # 82% chance: timer decreases normally
            timer_time -= 1
            real_time += tick_length

        if timer_time < 0:
            timer_time = 0

    return real_time


def main():
    TARGET_SIMULATIONS = 250000
    MAX_WALL_TIME = 10 * 60  # 10 minutes max real-time processing limit

    global_start_time = time.time()
    results = []

    print(f"Starting simulation run... (Target: {TARGET_SIMULATIONS:,} simulations)")
    print(f"Script will automatically terminate after 10 minutes.")
    print("-" * 50)

    for i in range(TARGET_SIMULATIONS):
        if time.time() - global_start_time > MAX_WALL_TIME:
            print("\n[!] 10-Minute Timeout Reached! Stopping early.")
            break

        sim_result = run_simulation(MAX_WALL_TIME, global_start_time)

        if sim_result is None:
            print("\n[!] 10-Minute Timeout Reached inside a simulation loop! Stopping early.")
            break

        results.append(sim_result)

        if (i + 1) % 25000 == 0:
            elapsed = time.time() - global_start_time
            print(f"Completed {i + 1:,} / {TARGET_SIMULATIONS:,} simulations... (Elapsed: {elapsed:.2f}s)")

    if len(results) > 0:
        expected_value = statistics.mean(results)
        median_value = statistics.median(results)
        max_value = max(results)
        min_value = min(results)

        print("\n" + "=" * 50)
        print("SIMULATION RESULTS")
        print("=" * 50)
        print(f"Total Simulations Run : {len(results):,}")
        print(f"Expected Value (Mean) : {expected_value:,.2f} real-world seconds")
        print(f"Median Time           : {median_value:,.2f} seconds")
        print(f"Shortest Run          : {min_value:,.2f} seconds")
        print(f"Longest Run           : {max_value:,.2f} seconds")
    else:
        print("No simulations completed in time.")


if __name__ == "__main__":
    main()
reddit.com
u/Desperate-Mud-1459 — 3 days ago

What do you think High Demon Elgrim looks like?

I have seen his picture on the Dougdoug wiki, but he just sort of looks like a generic dragon demon, so I was curious if you had any ideas for designs for the demon lord.

Personally I think he looks like Pyjama Sam, but slightly off, as his appearance is effected by what is sacrificed to him.

reddit.com
u/NarwhalSlight2130 — 3 days ago

Are dougdoug's videos scripted

Not all but some of his videos do seem scripted a lot of things happen at suspiciously convenient times the most recent example of this is the "stream ends in 10 minutes but the timer goes backwards" vid. I'm not accusing him since I don't have evidence but this isn't the first time I had this feeling so I thought I'd ask

reddit.com
u/youssefxtd — 3 days ago

Obsidian Pillar origin

It's an overlay Doug put onscreen from the TOTK line video

u/c00lkidd-HD — 4 days ago