Does random return a number from 0.0 to 1.0 or from 0 to 65536?
If the latter then you could change pick-a-card to be:

         (deffunction pick-a-card () (+ 1 (integer (* (/ (random) 65537)
52))))

Bob.

Bob Orchard
National Research Council Canada      Conseil national de recherches Canada
Institute for Information Technology  Institut de technologie de
l'information
1200 Montreal Road, Building M-50     M50, 1200 chemin Montrial
Ottawa, ON, Canada K1A 0R6            Ottawa (Ontario) Canada K1A 0R6
(613) 993-8557 
(613) 952-0215 Fax / tilicopieur
[EMAIL PROTECTED] 
Government of Canada | Gouvernement du Canada



> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED]
> Behalf Of [EMAIL PROTECTED]
> Sent: Monday, March 08, 2004 7:50 AM
> To: [EMAIL PROTECTED]
> Subject: Re: JESS: Poker Problem Continued -- dealing random cards.
> 
> 
> Well, just as in Java, this would be easier if the cards had a single
> index you could access them by. Say the cards had a "card-number"
> slot. Then to deal a card, you'd have to do the following steps (there
> are other ways to do this, but this might be the easiest for you to do
> right now.
> 
> 1) Initialize a counter variable to 0.
> 
> 2) Pick a random number from 1-52. 
> 
> 3) Fetch the given fact using a query
> 
> 4) If the fact belongs to "dealer", modify the fact and increment the
> counter.
> 
> 5) Repeat if the counter is less than five.
> 
> 
> On line 2, you need a function to pick a random number; this works
> just as in any other language. Call (random), multiply  by the size of
> the range, add the first value in the range, cast to int.
> 
> (deffunction pick-a-card()
>   (return (integer (+ 1 (* (random) 52)))))
> 
> On line 3, you need a query; given the "card-number" slot it would
> look like
> 
> (defquery find-a-card
>   (declare (variables ?n))
>   (card (card-number ?n)))
> 
> 
> I think Peder Jakobsen wrote:
> [Charset iso-8859-1 unsupported, filtering to ASCII...]
> > Hi, I'm continuing my quest for the JESS poker game, but 
> (random) is not
> > doing it for me unless i can get a random number between 1 
> and 52.  Your
> > suggestions are most appreciated:
> > 
> > (clear)
> > (reset)
> > (watch all)
> > 
> > (deftemplate card
> >    "A Card in a Deck"
> >     (slot suit)
> >     (slot rank (type INTEGER))
> >     (slot player)
> >  )
> > 
> > (deftemplate deck (slot card))
> > 
> > (foreach ?suit (create$ Clubs Diamonds Hearts Spades)
> > 
> >      (foreach  ?rank (create$ 1 2 3 4 5 6 7 8 9 10 11 12 13)
> >      ;; assign each card to the dealer by default
> >      (assert (card (suit ?suit) (rank ?rank) (player dealer)))
> > 
> >  )
> > 
> > ;; assign a card to a player by modifying a random fact
> > (modify 5 (player Joe))
> > 
> > ;; now assign a random card to a player by modifying a random fact
> > ;;  ??? help  ???
> > 
> > --------------------------------------------------------------------
> > To unsubscribe, send the words 'unsubscribe jess-users 
> [EMAIL PROTECTED]'
> > in the BODY of a message to [EMAIL PROTECTED], NOT to the list
> > (use your own address!) List problems? Notify 
> [EMAIL PROTECTED]
> > --------------------------------------------------------------------
> > 
> 
> 
> 
> ---------------------------------------------------------
> Ernest Friedman-Hill  
> Science and Engineering PSEs        Phone: (925) 294-2154
> Sandia National Labs                FAX:   (925) 294-2234
> PO Box 969, MS 9012                 [EMAIL PROTECTED]
> Livermore, CA 94550         http://herzberg.ca.sandia.gov
> 
> --------------------------------------------------------------------
> To unsubscribe, send the words 'unsubscribe jess-users 
> [EMAIL PROTECTED]'
> in the BODY of a message to [EMAIL PROTECTED], NOT to the list
> (use your own address!) List problems? Notify 
> [EMAIL PROTECTED]
> --------------------------------------------------------------------
> 

--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------

Reply via email to