Last poster before threadlock gets a cookie (cookie thread (Part 7)) (Part 8)

it’s literally all vibes.

3 Likes

yes, which is what I honestly hate :joy_cat:

2 Likes

The vibe checking didn’t pass the vibe check

1 Like

The site for DeepSeek is saying that they have been large-scale attacked recently. Chaotic

they finally made a game for card counters and its called wallstreetbets card counting not required

4 Likes

Good film.

in what should’ve been no surprise to me, my school’s counseling is incompotent; i just found out my counselor is supposed to meet with me monthly (ok to be fair they sent out like one invitation i didn’t respond to but like.); and then like they were like “wow you’re doing so good in your classes and at having friends” which like I mean i am debatably better at school & do have 1 friend & am in more situations but most of this is because i have 3 study halls in the seniors area wherein seniors are. They haven’t been doing the meetings where they put me into a room until i send an email to my teacher but I don’t have complaints about that. However, I have received notice of every fire drill so overall 7/10

3 Likes

yeah

3 Likes

tbh school counselors generally exist mostly for like the top 1% and the bottom 9% of students

if you’re in that middle 90% then like highkey they probably could be doing something more impactful with their time

1 Like

in a perfect world educational institutions have enough money to hire enough counselors to be a personal guide to every student but like there are literally hundreds of millions of children in schools and that’s not even counting higher education so like we do need to be efficient at some point

1 Like

plus that bottom 9% is going to take up like 90% of your counselors’ time essentially by necessity

1 Like

your average, middle-of-the road (plus or minus) student just doesn’t need significant support from the counseling office in most situations

you’re doing okay, passing classes, on track to graduate

you’re not in need of extra resources or seeking out advanced material the school doesn’t normally offer

genuinely not a ton they can offer you that would be truly helpful without taking away from kids who really truly do need their time and attention if they are to have any hope of passing

2 Likes

mine told me i’d regret dropping out and would never do anything with my life

so 50/50 hit rate

2 Likes

yea

I am going to sleep, good night lovely FooLers

2 Likes

SILVIU LOVES YOU ALL!!!

3 Likes

that’s crazy

1 Like

Poplove

2 Likes

Realizing that I have a simulation from Stellaris.

The Code
import random

# Player names; just for debugging and user readibility
playerNames = ["tutuu", "Zugzawang", "IcetFeelsPain", "otterpopd", "Sneakyphoenix", "RoseRedWitch", "baker", "Jarek", "Treasure", "Leafia", "an_gorta_slanktia", "Kiiruma", "Frostwolf103", "Clara", "Someone", "iamagummybear", "neil_the_eel", "Haze_with_a_Z", "Sadbi", "Cape90", "BradLand", "Stick", "Apprentice", "guava", "Arctic", "Bionic", "May"]
# Fairly self-explanatory
numMafia = 8

# Strategies

# Number of players you'd have attack given an infinite number
# Don't push this over 5; no marginal benefit past that point
intendedPlayersPerAttack = 5

# If you have fewer than this number of players, don't attack
minPlayersPerAttack = 1

class Player:
    def __init__(self, name):
        self.name = name
        self.canAttack = True
        self.isAlive = True
        self.isMafia = False

# Function for a simulated game
# Returns 1 if town wins; returns 0 if mafia wins
def game():
    # An array of all the players in the game
    allPlayers = [Player(name) for name in playerNames]
    # Turning some of them (numMafia) into mafia
    mafia = []
    for i in range(numMafia):
        number = random.randint(0, len(allPlayers) - 1)
        if number not in mafia:
            mafia.append(number)

    for player in mafia:
        allPlayers[player].isMafia = True

    day = 1
    # While no one has won the game, keep pressing on
    while True:
        # One day
        while True:
            # Players still alive
            currentPlayers = [player for player in allPlayers if player.isAlive]

            # Mafia still alive
            currentMafia = [player for player in allPlayers if player.isMafia and player.isAlive]
            
            # Randomly select a target
            target = random.choice(currentPlayers)

            # Get the attackers
            attackerPossibilities = [player for player in currentPlayers if player is not target and player.isAlive and player.canAttack]
            attackers = []
            # Turn ends when there are not enough people to attack
            if len(attackerPossibilities) == 0 or (minPlayersPerAttack < len(currentPlayers) and len(attackerPossibilities) < minPlayersPerAttack):
                break
            # If there aren't too few attackers to attack but not enough for choice, conscript everyone
            elif len(attackerPossibilities) <= intendedPlayersPerAttack:
                attackers = attackerPossibilities
            # Randomly select the attackers
            else:
                for i in range(intendedPlayersPerAttack):
                    attackers.append(random.choice([player for player in attackerPossibilities if player not in attackers]))
            
            # Attack happens
            for attacker in attackers:
                attacker.canAttack = False
            
            # Victim death calculation
            maxValue = 1 * len(attackers) ** 2 + 14 * len(attackers)
            if random.randint(0, 100) < (80 if len(attackers) >= 5 else maxValue):
                target.isAlive = False
                currentPlayers.pop(currentPlayers.index(target))

            # Attacker death calculation (only if the victim survives
            if target.isAlive and len(attackers) < 5:
                attackerDeath = False
                for attacker in attackers:
                    if not attackerDeath and random.randint(0, 100 - maxValue) < (10 - 3 * len(attackers)):
                        attacker.isAlive = False
                        currentPlayers.pop(currentPlayers.index(attacker))
                        attackerDeath = True

            # Mafia still alive
            currentMafia = [player for player in allPlayers if player.isMafia and player.isAlive]

            # Checks whether a team has won the game
            # Town wins when all mafia are dead, and there is still one town standing
            if len(currentMafia) == 0 and len(currentPlayers) > 0:
                return 1

            # Mafia wins when they make up at least half of town (6 of 12, or 7 of 13)
            # I'm assuming that if everyone's dead, mafia wins (not mathematically possible without external factors)
            if len(currentMafia) >= len(currentPlayers) / 2:
                return 0

        currentPlayers = [player for player in allPlayers if player.isAlive]

        # Town vote
        voted = random.choice(currentPlayers)
        voted.isAlive = False
        currentPlayers.remove(voted)
        
        # Checks whether a team has won the game
        # Town wins when all mafia are dead, and there is still one town standing
        if len(currentMafia) == 0 and len(currentPlayers) > 0:
            return 1

        # Mafia wins when they make up at least half of town (6 of 12, or 7 of 13)
        # I'm assuming that if everyone's dead, mafia wins (not mathematically possible without external factors)
        if len(currentMafia) >= len(currentPlayers) / 2:
            return 0

        # Mafia factional
        mafiaTargets = [player for player in currentPlayers if not player.isMafia]
        target = random.choice(mafiaTargets)
        target.isAlive = False

        # Checks whether a team has won the game
        # Town wins when all mafia are dead, and there is still one town standing
        if len(currentMafia) == 0 and len(currentPlayers) > 0:
            return 1

        # Mafia wins when they make up at least half of town (6 of 12, or 7 of 13)
        # I'm assuming that if everyone's dead, mafia wins (not mathematically possible without external factors)
        if len(currentMafia) >= len(currentPlayers) / 2:
            return 0

        # Reset the attacks for all living players
        for player in currentPlayers:
            player.canAttack = True

        day += 1

# Monte Carlo simulation time
# We run this simulation a large number of times and record the results.
# By the law of large numbers, we'll get something close to the actual probabilities.

# The number of times we'll run the program
# Keep this large
numTimes = 10 ** 6

# Our data
townWins = 0

# Running the simulation
counter = 0
while counter < numTimes:
    # townWins gets 1 if town won and 0 if mafia won
    # numTimes - townWins = mafWins
    townWins += game()

    # This is solely for visibility, like a loading bar
    # We're counting up to 100, which is when the program is done)
    if counter % (10 ** 4) == 0:
        print(int(counter / 10 ** 4))
    
    # Increment the counter 'cause otherwise you're in an infinite loop (no bueno)
    counter += 1

# Printing our final result
print("Number of Games: {0}\nTown Winrate: {1}%".format(numTimes, round(100 * townWins / numTimes, 2)))

# More readable formulas for the probabilities of death
'''
0 - 0.00
1 - 0.15
2 - 0.32
3 - 0.51
4 - 0.72

a + b = 0.15
4a + 2b = 0.32

a = 0.01
b = 0.14
c = 0.00

Probability of victim dying = 0.01x^2 + 0.14x, capped at 0.8
x = Number of attackers

If victim does not die:
Probability of any individual attacker dying = 0.1 - 0.03x, plateauing at 0
x = Number of attackers
'''

i politely walked crossmap with atlas and hit the goal in because they kept trying to get a duo ko

1 Like