in reply to Sainthood via Seniority Simulation

The logic is a little bit off in the while loop ;-)

If during the day, you advance to the next level, number of votes you can cast for that day is still based on your previous day's level.

However in your script, you do $level = $level->{next} first, and then right the way started to use $level->{votes}, which is the number of votes for the new level.

Not much difference in terms of the final results, especially take all the rand() into consideration, but the simulation is not precise.

Replies are listed 'Best First'.
Re: Re: Sainthood via Seniority Simulation
by ysth (Canon) on Nov 05, 2003 at 06:20 UTC
    I'm not sure I understand you. Can you explain in code or pseudocode? My intent was that everything in the loop after the ++$day is events occurring during the course of a day. Before ++$day is events occurring at the end of a day. (This doesn't correctly model exactly when the level actually changes, but I think it does use fields based on the correct level everywhere.)
      People didn't seem to like my asking for further explanation :(. I still don't see the bug, though I see my loop is written in a rather confusing way :(. I'm trying to compare what I have with sauoq's version. The first difference I see is whether the day number is printed just before or just after incrementing, which is really a cosmetic issue. We also differ on if the "used all votes" bonus applies to monks; Voting/Experience System could be read either way. (update: monks(5) don't seem to get the bonus--updating my version now)

      my version:

      increment level if appropriate increment day add per-vote xp add login xp add all-votes-used xp repeat
      sauoq's version:
      increment day increment level if appropriate add login xp add per-vote xp add all-votes-used xp repeat