# looks good looking for suggestions..

• 11-30-2010, 01:10 PM
search4survival
looks good looking for suggestions..
Question:
In the game of craps, a pass line bet proceeds as follows. Two six-sided dice are
rolled; the first roll of the dice in a craps round is called the “come out roll.” A come
out roll of 7 or 11 automatically wins, and a come out roll of 2, 3, or 12 automatically
loses. If 4, 5, 6, 8, 9, or 10 is rolled on the come out roll, that number
becomes the point. The player keeps rolling the dice until either 7 or the point is
rolled. If the point is rolled first, then the player wins the bet. If a 7 is rolled first,
then the player loses.
Write a program that simulates a game of craps using these rules without human
input. Instead of asking for a wager, the program should calculate whether the player
would win or lose. The program should simulate rolling the two dice and calculate
the sum. Add a loop so that the program plays 10,000 games. Add counters that
count how many times the player wins, and how many times the player loses. At the
end of the 10,000 games, compute the probability of winning [i.e., Wins / (Wins +
Losses)] and output this value. Over the long run, who is going to win the most
games, you or the house?
Note: To generate a random number x, where 0 x ≤< 1, use x = Math.random(); .
For example, multiplying by 6 and converting to an integer results in an integer that
is between 0 and 5.

Code:

```public class CrapsGame  {         public static  int gameswon = 0;         public static  int gameslost = 0;         public static int max = 6;         public static int min = 1;                 public static void main(String[] args)                 {                 int diceValue,diceValue2,point;                 for ( int i = 0 ; i < 10000; i++)         {                         diceValue = diceSimulator(max,min );                         System.out.println("original dicevalue is " + diceValue);                                                 switch (diceValue)         {         case  7:         case 11:                         gameswon++;                 break;         case  2:         case  3:         case 12:                         gameslost++;                 break;         default:                 point = diceValue;                                 do{                         System.out.println("point " + point );                         diceValue2 = diceSimulator(max,min);                         if (diceValue2 == point)                                 {System.out.println("point is rolled..woo hooo");                                 gameswon++;}                         else if                                 (diceValue2 == 7)                                 {System.out.println("7 is rolled..boo");                                 gameslost++;}                         else                         {                                 System.out.println("diceValue2 is " + diceValue2);                         }                                           }                 while ((diceValue2 != 7) && (diceValue2 != point) );                                 break;         }                        }                System.out.println("games won: " + gameswon);         System.out.println("games lost: " + gameslost);         System.out.printf("Probability of winning:%.2f " , (double) gameswon/ (gameswon + gameslost)); }                         public static int diceSimulator(int nmax,int nmin)         {                   int randomn1  = (int) ( nmin +  Math.random() * ((nmax - nmin + 1) ));                   int randomn2  = (int) (nmin + Math.random() * ((nmax - nmin + 1 ))) ;                   int random = randomn1 + randomn2;                                   return random;                         }         }```
• 11-30-2010, 01:13 PM
Fubarable
• 11-30-2010, 01:16 PM
Quote:

Originally Posted by Fubarable

or get a questionable answer. ;-)
• 11-30-2010, 01:18 PM
search4survival
i am terribly sorry but i dont understand

it is obvious that you guys are thousand times more experienced with java compared to me ..so i just asked for a suggestion..

i needed someone to tell me if my code is good or bad...
if good how can i improve it

if bad how can i improve it.....
• 11-30-2010, 01:47 PM
So then say that.

Return question: Does it work?
• 11-30-2010, 01:47 PM
Fubarable
Have you tested it? Does it work for all tested conditions? If not, what doesn't work?...
• 11-30-2010, 01:49 PM
search4survival
yes it works...(i think soo...)

i am asking if my method is right....

is there a method by which i can write better code than this...
• 11-30-2010, 01:51 PM
JosAH
Quote:

Originally Posted by Fubarable
Have you tested it? Does it work for all tested conditions? If not, what doesn't work?...

It works fine; it ain't broke so there's no need to fix it. I like the correct solution how to simulate the dice: generating a single uniformly distributed pseudo random number in the range [2, 12] is incorrect.

kind regards,

Jos
• 11-30-2010, 01:52 PM
search4survival
i actually thought about doing that...

can you please tell me whats wrong with that approach?
• 11-30-2010, 01:58 PM
JosAH
Quote:

Originally Posted by search4survival
i actually thought about doing that...

can you please tell me whats wrong with that approach?

You can generate 36 combinations with two dice; e.g. you can generate a 7 by throwing (1, 6), (2, 5), (3, 4), (4, 3), (5, 2) and (6, 1); those are six combinations out of 36 (1/6). Had you used a single random number the probability of throwing 7 would have been 1/11, which is incorrect.

kind regards,

Jos
• 11-30-2010, 01:59 PM