Solved

why doesnt my random number generator method work? just keeps putting out same #?

Posted on 2004-08-15
10
213 Views
Last Modified: 2010-03-31
     import java.io.*;
import java.util.*;

//***************************************************************
// Program that simulates the game of Black Jack between one player and
// a simulated dealer.  
//***************************************************************
class Blackjack

{
      public static void main(String args[])throws IOException
      {
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
      
      final int blackjack=21;
      int pcard1=0, pcard2=0, pcard3=0, pcard4=0, pcard5=0, dcard1=0, dcard2=0, dcard3=0, dcard4=0, dcard5=0;
      int dealer=0, player=0, count=0;
      char face, another;

//*************************************************************************
//21Dealing first hand
//*************************************************************************      
      
      System.out.println("Player      Dealer");
      for (count=0; count<2; ++count)
      {  pcard1=deal();
         System.out.print(" \t"+pcard1);
      }
      for (count=0; count<2; ++count)
      {  dcard1=deal();
         System.out.print("\t"+dcard1);
      }            

       static int deal()
      {
      Random generator = new Random();
      int card;

      card = generator.nextInt(13) + 1;

      return card;
      } // method deal
0
Comment
Question by:hedge243
  • 4
  • 3
  • 2
  • +1
10 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 11805974
Create your Random once in the constructor of Blackjack
0
 

Author Comment

by:hedge243
ID: 11806006
can you show me what you mean, I am very new at this.
0
 
LVL 92

Expert Comment

by:objects
ID: 11806008
static int deal()
{
     int card = (int) Math.random()*13 + 1;

     return card;
} // method deal
0
Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

 
LVL 92

Expert Comment

by:objects
ID: 11806015
missed some brackets, that should be:

static int deal()
{
     int card = (int) (Math.random()*13) + 1;

     return card;
} // method deal

0
 
LVL 86

Accepted Solution

by:
CEHJ earned 100 total points
ID: 11806038
>>can you show me what you mean, I am very new at this.

Yes, something like this. Java is an object-oriented language and you should try to produce object-oriented code, i.e. non-procedural:


import java.io.*;
import java.util.*;

//***************************************************************
// Program that simulates the game of Black Jack between one player and
// a simulated dealer.
//***************************************************************
class Blackjack {
      private Random dealer;

      public Blackjack() {
            dealer = new Random();
      }

      public static void main(String args[]) throws IOException {
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

            final int blackjack = 21;
            int pcard1 = 0;
            int pcard2 = 0;
            int pcard3 = 0;
            int pcard4 = 0;
            int pcard5 = 0;
            int dcard1 = 0;
            int dcard2 = 0;
            int dcard3 = 0;
            int dcard4 = 0;
            int dcard5 = 0;
            int dealer = 0;
            int player = 0;
            int count = 0;
            char face;
            char another;

//*************************************************************************
//21Dealing first hand
//*************************************************************************
    Blackjack bj = new Blackjack();
            System.out.println("Player     Dealer");
            for (count = 0; count < 2; ++count) {
                  pcard1 = bj.deal();
                  System.out.print(" \t" + pcard1);
            }
            for (count = 0; count < 2; ++count) {
                  dcard1 = bj.deal();
                  System.out.print("\t" + dcard1);
            }
      }

      public int deal() {
            return dealer.nextInt(13) + 1;
      }
      // method deal
}
0
 
LVL 92

Expert Comment

by:objects
ID: 11806108
Simply replacing your deal method with the one i posted above will fix it.
Moving where u create Random will not make any difference, in fact you don't need to create one at all.

0
 

Author Comment

by:hedge243
ID: 11806768
so I need to make sure I know what Im doing, do my notes look right?

mport java.io.*;
import java.util.*;

//***************************************************************
// Program that simulates the game of Black Jack between one player and
// a simulated dealer.
//***************************************************************
class Blackjack
{
     private Random dealer;

     

     public static void main(String args[]) throws IOException {
          BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

          final int blackjack = 21;
          int pcard1 = 0;
          int pcard2 = 0;
          int pcard3 = 0;
          int pcard4 = 0;
          int pcard5 = 0;
          int dcard1 = 0;
          int dcard2 = 0;
          int dcard3 = 0;
          int dcard4 = 0;
          int dcard5 = 0;
          int dealer = 0;
          int player = 0;
          int count = 0;
          char face;
          char another;

//*************************************************************************
//21Dealing first hand
//*************************************************************************
    Blackjack bj = new Blackjack();
          System.out.println("Player     Dealer");
          for (count = 0; count < 2; ++count) {
               pcard1 = bj.deal();
               System.out.print(" \t" + pcard1);
          }
          for (count = 0; count < 2; ++count) {
               dcard1 = bj.deal();
               System.out.print("\t" + dcard1);
          }
     } // method main


//****************************************************************************
//method to choose random number or instantiate an object?
//****************************************************************************
      public Blackjack()
      {
          dealer = new Random();
      } // method Blackjack

//****************************************************************************
// method to return # from 1 to 13
//****************************************************************************
     public int deal()
     {
        return dealer.nextInt(13) + 1;
     }// method deal

     
} // class Blackjack
0
 
LVL 92

Expert Comment

by:objects
ID: 11806783
Simpler just to not worrying about Using Randon class at all, There is a static method Math.random() that does all you need. See the code I costed above for how to use it.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 11808024
>>//method to choose random number or instantiate an object?

should probably read

// Instantiate a Blackjack instance and create a Random as 'dealer' to deal random cards

Incidentally, shouldn't deal be producing 2 to 14? (I don't know the rules of blackjack)
0
 
LVL 3

Expert Comment

by:RuadRauFlessa
ID: 11825995
CEHJ,
Looking at his deal function it looks correct since "A" = 1 or 11 and everything above "10" from there on out = 10

It all actually depends on how you want to represent the whole thing

if you say 1 = 2, 2 = 3 .... 12 = "Q", 13 = "K", 14 = "A"

Then you would be correct.
0

Featured Post

Problems using Powershell and Active Directory?

Managing Active Directory does not always have to be complicated.  If you are spending more time trying instead of doing, then it's time to look at something else. For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
custom annotations 9 38
HTTPSessionBindingListernter not configured in deployment descriptor 2 53
varialbe initialization 11 33
eclipse buid path vs tomcat lib path 10 23
For customizing the look of your lightweight component and making it look opaque like it was made of plastic.  This tip assumes your component to be of rectangular shape and completely opaque.   (CODE)
By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question