bug-gnubg
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-gnubg] Re: Gnubg: Rollout options


From: Nis Jorgensen
Subject: [Bug-gnubg] Re: Gnubg: Rollout options
Date: Mon, 21 Oct 2002 22:02:10 +0200

On 19 Oct 2002 15:37:23 -0700, address@hidden (Zorba) wrote:

>> I think it would be useful to randomise the sequences so that if you
>> terminate a rollout before it finishes, you will probably get more
>> meaningful results. So for multiples of 36, randomise the sequence of
>> first rolls, for multiples of 1296, randomise the sequence of first
>> roll pairs. 

I have been "lurking" with some ideas for doing this for a while. I
don't feel that I have found the perfect way yet. My idea is in fact
to not randomize all 1296 pairs of rolls, but instead randomize and
repeat the 36 first rolls, then randomize and repeat the second rolls
as well, with an offset that is increased for each 36 rolls. This
would allow for rotation of the two first rolls no matter what the
length of the rollout is (!). See pseudocode below.

Unfortunately, I do NOT see a way of easily extending this to the 3rd
or further rolls.

>Yes. If not too complicated, the rolls could also be picked based on
>their equities and assure a spread around the average equity after all
>36 rolls, similar to "reduced evaluations". 

I just looked at the code for reduced evluations ... it doesn't look
to me like it is looking at actual equity when choosing which third of
the rolls to try. Which I think is good (too much source for small
bias which might go undetected ...).

I am very sceptical towards any introduction of equity-based
selections of rolls - it introduces too much possibility of untracable
bias.

>I think this might not only improve interrupted results, but also the
>final result of a rollout. It might be a bit difficult to implement
>though, but perhaps it's not so bad if you only allow 216, 324, 432
>and 648 trials and then pick the second rolls like 17%, 25% 33% and
>50% speed 2-ply evaluation would. You could then rotate the first roll
>and also assure some kind of good spread for the second roll. Similar
>schemes could be used for the third roll if trials are more than 1296,

This is almost achieved by my suggestion.

Pseudocode

function GetRoll(TrialNumber, Rollnumber)
        if TrialNumber=1 then
                Rolls1 = Array containing 36 rolls in order
                Randomize(Rolls1)
                Rolls2 = Array containing 36 rolls in order
                Randomize(Rolls2)
        end if
        
        if RollNumber = 1 then
                Return Rolls1[TrialNumber mod 36]
        elseif RollNumber = 2 then
                Return Rolls2[TrialNumber mod 36 
                        + TrialNumber div 36 ]          
        else
                Return RandomRoll()
        end if
end function

-- 
Nis Jorgensen
Amsterdam

A coin has no memory. 
Backgammon, however, is played with dice.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]