Help designing restricted randomness

afisakov

You can change this now in User CP.
Reaction score
37
I am working on a map that has several bosses drop a random class-specific drop. Since there are 12 classes there is a 1/12 chance that a drop for your class will randomly appear and these bosses respawn.
However, in reality the nature of rng makes it that killing the same boss 12x does not guarantee you will get your drop and can sometimes take over 20 attempts.
(11/12)^12 has a 35% chance of not dropping what you want
(11/12)^20 has 17.5% chance of still failing which feels horrible to players
SO what I am trying to do is use hashtables to build a 'memory' into the drop trigger so it cannot repeat any of the last 6 drops. That way if you fail a couple of times the odds of a success start going up and getting 12+ fails becomes alot less likely.
Unfortunately it does not seem to be working properly and sometimes drops no item or repeats an item within 6 attempts. I posted the code below and am looking for advice on either fixing my code or how to do this better.
Thanks in advance for the help.
Code:
 function Charspecificdrop takes integer gtype, real x, real y returns nothing
local integer i=1
local integer rand=GetRandomInt(1,12)
loop
   exitwhen i>6
   if LoadInteger(rv,6,gtype*10+i)==rand then
       set rand=GetRandomInt(1,12)
       set i=0
       call DisplayTextToPlayer(GetLocalPlayer(),0,0,"rerolled drop")
   endif
   set i=i+i
endloop
set i=LoadInteger(rv,6,gtype*10+9)
if i<1 or i>5 then
set i=1
else
set i=i+1
endif
call SaveInteger(rv,6,gtype*10+9,i)
call DisplayTextToPlayer(GetLocalPlayer(),0,0,"drop # "+I2S(i)+", r "+I2S(rand))
call SaveInteger(rv,6,gtype*10+i,rand)
call CreateItem(jX[LoadInteger(rv,6,gtype*10)+rand],x,y)
endfunction
on initialize
Code:
set i=0
loop
   exitwhen i>40
   call SaveInteger(rv,6,i,0)
   set i=i+1
endloop
call SaveInteger(rv,6,0,350-1) //refers to original spots in array that random item spawned from
call SaveInteger(rv,6,10,260-1)
call SaveInteger(rv,6,20,275-1)
call SaveInteger(rv,6,30,335-1)
 

jonas

Ultra Cool Member
Reaction score
47
When you do not drop an item, does it display a lot of rerolls?

When it drops the same item again, is the displayed rand value also the same as in the last 6 drops?

I can't find any correctness problem in your code.

I believe either jX is misconfigured (duplicates? wrong index? zeros?), and/or you are running over the operation limit, and/or the hashtable is buggy.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • tom_mai78101 tom_mai78101:
    Starting this upcoming Thursday, I will be in Japan for 10 days.
  • tom_mai78101 tom_mai78101:
    Thursday - Friday will be my Japan arrival flight. 9 days later, on a Sunday, will be my return departure flight.
    +2
  • The Helper The Helper:
    Hope you have safe travels my friend!
    +1
  • vypur85 vypur85:
    Wow spring time in Japan is awesome. Enjoy!
  • The Helper The Helper:
    Hopefully it will be more pleasure than work
  • vypur85 vypur85:
    Recently tried out ChatGPT about WE triggering. Wow it's capable of giving a somewhat legitimate response.
  • The Helper The Helper:
    I am sure it has read all the info on the forums here
  • The Helper The Helper:
    i think triggering is just scripting and chatgpt is real good at code
  • vypur85 vypur85:
    Yeah I suppose so. It's interesting how it can explain in so much detail.
  • vypur85 vypur85:
    But yet it won't work.
  • The Helper The Helper:
    it does a bad ass job doing excel vba code it has leveled me up at my job when I deal with excel that is for sure
  • vypur85 vypur85:
    Nice! I love Excel coding as well. Has always been using Google to help me. Maybe I'll use ChatGPT next time when I need it.
  • The Helper The Helper:
    yeah whatever it puts out even if it is not perfect I can fix it and the latest version of chatgpt can create websites from pictures it will not be long until it can do that with almost all the tools
    +1
  • The Helper The Helper:
    These new Chat AI programs are going to change everything everyone better Buckle the Fuck Up!
  • The Helper The Helper:
    oh and Happy Tuesday Evening! :)
    +1
  • jonas jonas:
    Im worried they'll change things for worse
  • jonas jonas:
    A lot more low quality content, a lot more half-baked stuff.
  • jonas jonas:
    If you're good enough to spot the mistakes of the answers you don't need it in the first place. If you aren't good enough, you're gonna rely on some half-correct stuff
  • The Helper The Helper:
    the earlier AI is and has been used extensively for publishing news and other content for a while now
  • jonas jonas:
    I used to be active on quora, it's now flooded with extremely similar, superficial answers that often miss the point of the question
  • N NJJ:
    hi
  • N NJJ:
    Hello, gathering all my old accounts… :)
    +1
  • The Helper The Helper:
    by all means gather it all up!

    The Helper Discord

    Members online

    Affiliates

    Hive Workshop NUON Dome World Editor Tutorials

    Network Sponsors

    Apex Steel Pipe - Buys and sells Steel Pipe.
    Top