@Bungie RNG is totally broken

I’m not sure what kind of RNG Bungie is using for their Public Event spawns, but it certainly is NOT straight random.  There has to be other modifiers at play in what event spawns.  I’m not sure why you would not want public events to be totally random, but apparently Bungie doesn’t like full RNG.

I’ve written a quick PowerShell script to pull 96 public events randomly.  When the events possible are a 3:1 ratio the results are 3:1.

I wanted to add some more complexity so I made the “groups” of events random themselves.  As expected this made the results less random, but still I found the results to be within and expected set.

 

Code:


<# Powershell script by @DJKouza https://twitch.tv/djkouza 2018/07/28 #>

Write-Host "A better RNG than Bungies...."

Function runRNJesus()
    {
    $event=""
    #Pick the grouping to use (we are setting up 4 groups that can be randomly chosen for the event options  
    $random=Get-Random -Maximum 5 -Minimum 1
    Switch($random)
        {
        1 {$group=$group1}
        2 {$group=$group2}
        3 {$group=$group3}
        4 {$group=$group4}
        }
#STATIC GROUP TEST (ie.  what I would really expect)
#$group=@("taken","cabal","taken","taken")
#END STATIC GROUP TEST        
    #Pick which event to spawn
    $random2=Get-Random -Maximum 5 -Minimum 1
    Switch($random2)
        {
        1 {$event=$group.get(0)}
        2 {$event=$group.get(1)}
        3 {$event=$group.get(2)}
        4 {$event=$group.get(3)}
        }
    
        
    Return $event
    }

##Init Variables
$totalcount=0
$avg=0
$cabalCount=0
$cabalStreak=1
$MaxCabalStreak=0
$takenCount=0
$takeStreak=1
$maxTakenStreak=0
$eventCount=0
$group1=@("cabal","taken","cabal","taken")
$group2=@("taken","cabal","taken","taken")
$group3=@("cabal","taken","taken","cabal")
$group4=@("taken","cabal","taken","taken")

#Run loop for event picking (96 = 1 day @ 4/hour)
While($totalcount -lt 96)
    {
    $currEvent = runRNJesus
       
        if($eventCount -ne 12)
            {
            $eventCount++
            Write-Host -NoNewline "$currEvent  |  "
            }
        else
            {
            Write-Host "$currEvent  |  "
            $eventCount=0
            }
        


    Switch($currEvent)
        {
        cabal {
                $cabalCount++
                $takenStreak=1
                if($prevEvent -eq $currEvent)
                    {
                    $cabalStreak++
                    if($cabalStreak -gt $MaxCabalStreak)
                        {
                        $MaxCabalStreak = $cabalStreak
                        }
                    }
                $prevEvent=$currEvent
                }
        taken {
                $takenCount++
                $cabalStreak=1
                if($prevEvent -eq $currEvent)
                    {
                    $takenStreak++
                    if($takenStreak -gt $MaxTakenStreak)
                        {
                        $MaxTakenStreak = $takenStreak
                        }
                    }
                $prevEvent=$currEvent
                }
        }

    $totalcount++

    }
$cabalPercent=$cabalCount/$totalcount*100
$takenPercent=$takenCount/$totalcount*100
Write-Host ""
Write-Host "Taken: Max Streak $MaxTakenStreak  |  Total $takenCount  |  Percent $takenPercent"
Write-Host "Cabal: Max Streak $MaxCabalStreak  |  Total $cabalCount  |  Percent $cabalPercent"

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *