/*
Die Rolling Example II
April 21, 1996
Copyright 1996 Electric Communities
All Rights Reserved Worldwide.
*/
import ec.e.run.EInteger;
import java.util.Random;
public class DemoRoller
{
public static void main(String args[]) // Step 1
{
DieRoller rollerOne = new DieRoller(); // Step 2
DieRoller rollerTwo = new DieRoller(); // Step 3
EInteger rollerOneHash, rollerOneX; // Step 4
EInteger rollerTwoHash, rollerTwoX; // Step 5
rollerOne <- doDieRoll(&rollerOneHash, &rollerOneX,
rollerTwoHash, rollerTwoX); // Step 6
rollerTwo <- doDieRoll(&rollerTwoHash, &rollerTwoX,
rollerOneHash, rollerOneX); // Step 7
} // Step 8 (main is finished)
}
eclass DieRoller
{
Random randomGenerator = new Random();
emethod doDieRoll(EDistributor myHash, EDistributor myX,
EInteger hisHash, EInteger hisX) // Step 09, Step 10
{
long X = randomGenerator.nextLong(); // Step 11
myHash <- forward(new EInteger(OneWayHash(X))); // Step 12
ewhen hisHash (long otherHash) // Steps 13-18
{
myX <- forward(new EInteger(X)); // Step 19
ewhen hisX (long otherX) // Steps 20-24
{
long finalResult = Combine(X, otherX); // Step 25
System.out.println("Roll result = " + finalResult);
if (OneWayHash(otherX) != otherHash) {
System.out.println("There was cheating.");
}
}
}
}
long OneWayHash(long a) /* Placeholder function */
{
return (a);
}
long Combine(long a, long b)
{
return (((a ^ b) % 6) + 1);
}
}