Tilted Forum Project Discussion Community

Tilted Forum Project Discussion Community (https://thetfp.com/tfp/)
-   Tilted Technology (https://thetfp.com/tfp/tilted-technology/)
-   -   [java] card program (https://thetfp.com/tfp/tilted-technology/48101-java-card-program.html)

ToolBag 03-06-2004 07:07 PM

[java] card program
 
hey all, I am having a problem thinking through a program that simply asks the user to pick however many cards they want, no more than 52 obviously. I then give the cards to the user via message dialog. I have a grasp of how to do this up until it involves multiple cards. Like how I cannot give the same card twice. I know I should use an array of some sort but Im not sure how to set it up so the same card is not given. If anyone could give me a hand that would be great! Thanks in advance.

feelgood 03-06-2004 09:02 PM

Use a randomizer, and use a condition so that the second card picked does not equal to the card already picked.

ToolBag 03-06-2004 09:11 PM

yeah, I used the Math.random method and my program is fine if I didnt have to check to see if the same card was drawn at any time. So if the user picks that they want 10 cards, Im not sure how to make sure none of the 10 are the same.

kel 03-06-2004 09:19 PM

Let me preface this by saying you should ignore everything I write, I'm anal

My take...
Place all 52 cards in the array, generate say 100 tuples of two numbers less then 52.

Then for every tuple generated switch the elements in the array that correspond to the first and last value in each tuple. This will randmomize the array in place.

Then just feed the first however many elements are asked for from the array.

I like this because it avoids collision in the randomizer. If a collision occurs it's no biggy, you don't recompute, if you collide in the other scheme you have to recompute another random number with the possibility of colliding occuring again.

With 51 cards generated you can imagine how the number of collisions will grow. The other scheme works with 52 cards because the number is small.

But what if we were shuffling magic cards? Every single magic card ever made would be in the 1,000s granted you would never deal that many cards, but can see how this could be a problem.

kel 03-06-2004 09:21 PM

What you need to do is maintain an array that lists all the cards you've already dealt, when you generate a new random card check in the array if it has been dealt. If it has been dealt already generate a new one.

ToolBag 03-06-2004 09:31 PM

Though I dont really know what you mean when you say "tuple", I do understand what your trying to say, I guess my novice mind would have not thought of that. My initial intention was to make all 52 cards an array first and then pick them off one by one.

bogosj13 03-06-2004 11:03 PM

Create a "Card" class that represents the suit and value of the card as integers (i.e. Clubs=0, Hearts=1, etc).

Use two for loops to create every possible card and stick it into a java.util.ArrayList like so:

PHP Code:

ArrayList deck = new ArrayList();
for (
int suit=0suit<4suit++) {
  for (
int face=0face<13face++) {
    
Card c = new Card(suitface);
    
deck.add(c);
  }


Then, for however many cards the user asks for, generate a random number between 0 and deck.size(), and do:

PHP Code:

Card removedCard = (Card)deck.remove(randomNumber); 


kel 03-07-2004 06:19 AM

http://en.wikipedia.org/wiki/Tuple

It's just a fancy buzzword mostly.

"In mathematics, a tuple is a finite sequence of objects. (An infinite sequence is a family.) Tuples are used by mathematicians to describe mathematical objects that consist of certain components. For example, a directed graph is defined as a tuple (V, E) where V is the set of nodes and E is a subset of V × V that denotes the edges."

In our case the tuple consists of (A, B) where A is a location in the array being switched with B (which is a location in the array.


All times are GMT -8. The time now is 01:48 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, vBulletin Solutions, Inc.
Search Engine Optimization by vBSEO 3.6.0 PL2
© 2002-2012 Tilted Forum Project


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73