[opensource] Random seed
BRIAN SWANEY
swaney.29 at osu.edu
Tue Mar 20 17:38:19 EDT 2007
The swap thing you mentioned is, more or less, what my current algorithm does. Thanks anyway though.
-Brian Swaney
----- Original Message -----
From: Darla Shockley <shockley at cse.ohio-state.edu>
Date: Tuesday, March 20, 2007 4:01 pm
Subject: Re: [opensource] Random seed
> By "swap(arr[a],arr[b])", I just meant that as shorthand for:
>
> tempString = arr[a];
> arr[a] = arr[b];
> arr[b] = tempString;
>
> Sorry to not be clear! :) But since that is working like you
> want now
> anyway, it probably doesn't matter.
>
> As for == and strings, in case you haven't figured out yet (and
> since I
> wasn't very clear before), what you should be using is
> "string1.equals(string2)" (or "string1.equals("abc")") instead of
> "string1
> == string 2" (or "string1 == "abc"").
>
> Darla
>
>
> "BRIAN SWANEY" <swaney.29 at osu.edu> wrote in message
> news:mailman.34.1174420174.1359.opensource at cse.ohio-state.edu...
> > Well, I'm gradually learning that the "==" thing doesn't work
> all that
> > well with strings... I took my first programming class this
> quarter (CSE
> > 201), so I'm still learning the syntaxes by trial and error.
> >
> > Fixing the double variable thing seems to work (it goes all the
> way
> > through). Now I'm on too fixing the part where it crashes when
> reading
> > effect texts for certain cards.
> >
> > Regarding the class, I quite agree in how sloppy it is to have
> the whole
> > code in 1 file, but I don't yet know how to put it into another
> class. I
> > tried once, and it just started calling it undefined. If someone
> knows how
> > (which I'm sure they do), some advice on doing that would be
> greatly
> > appreciated...
> >
> > I'm not sure I really understand the "swap(a, b)" syntax too
> well (I've
> > only seen limited commands in intro to Java). If it repeats the
> positions
> > (which it does), then wouldn't that wind up swapping a bunch of
> empty/null
> > strings? I am using a certain code I used in my TI-83 calculator
> that I
> > worked on a year ago with a friend (I'm also attaching the GPL
> to it, and
> > attaching it in an e-mail for whoever wants a copy. Replace
> occurrences of
> > "-->" with an arrow, since n it's in Notepad format.). This code
> writes a
> > given (random) position line in the first array to a different
> (in
> > sequence) line in the other one, then blanks out the first one
> so it
> > remembers that it already took that card.
> >
> > As for the arrays, the TI-83 graphing calculator has no file
> reading
> > whatsoever, and it instead decodes the information from numbers
> in a
> > matrix (prgmSUBDECK4) and shuffles numbers in a list from 1 to
> 40 (well,
> > assuming nothing was swapped with the side deck). Since the file
> reading
> > seems a bit limited and redundant, each individual line from the
> file
> > already is stored on an string array (generally) called "deck".
> It only
> > ever reads from the file to set the current arrays.
> >
> > I thought it was a bad random seed all this time. As for the
> pseudorandom
> > thing, I think I'm just going to update a seed input each time
> by writing
> > it to a file and re-reading it the next time the file is opened.
> >
> > Many thanks to all of you for your help so far.
> >
> > -Brian Swaney
> >
> > ----- Original Message -----
> > From: Darla Shockley <shockley at cse.ohio-state.edu>
> > Date: Tuesday, March 20, 2007 12:12 pm
> > Subject: Re: [opensource] Random seed
> >
> >> Hi. I lurk here a lot, but now I can actually be useful:
> >>
> >> First, yeah, it looks to me like for the side deck, you're
> >> subtracting 15
> >> twice. But I don't think that's the only problem. The other
> >> problem is
> >> this: Suppose your deck size is 40. So you're picking 40
> >> different numbers
> >> (between 1 and 40). It is very, very likely that, considering
> >> that the
> >> numbers are random (well, pseudorandom), you'll get the repeats of
> >> some of
> >> the numbers. One way you could solve this, of course, is to check
> >> for
> >> repeats, and try again, but that's inefficient. Here's what I
> >> would do (in
> >> pseudocode):
> >>
> >> for (i = 1 to decksize)
> >> swap(deck[i], deck[random.nextInt(decksize - 1))
> >>
> >> Another thing I noticed looking at the code: you are comparing
> >> strings
> >> using "==". It doesn't seem clear to me that you know that when
> >> you use ==,
> >> java is comparing the memory address of the String object, not the
> >> contents
> >> of the string. This is working for you because of the way Java
> >> allocates
> >> memory for Strings. If I were you, I might consider changing
> >> those =='s to
> >> .equals(). (Also, I don't think it's guaranteed anywhere in the
> >> specs for
> >> the language/in the API, so there could conceivably be an
> >> implementation for
> >> which your code doesn't work. But I haven't looked carefully, so
> >> it may
> >> actually be guaranteed somewhere.)
> >>
> >> Also note: I'm not very familiar with Java 1.5, so it's possible
> >> that I'm
> >> completely wrong and Strings are now dealt with as primitives. If
> >> that's
> >> the case, ignore the second paragraph. (That's the kind of thing
> >> I would
> >> think I would have heard, though.)
> >>
> >> Ditto on the advice to create a card class--I might just handle a
> >> deck as an
> >> array of Cards, though. (But I have a tendency to over-use
> >> arrays, so
> >> probably you shouldn't listen to me there.)
> >>
> >> Good luck.
> >>
> >> Darla
> >>
> >> "Jim Dinan" <dinan at cse.ohio-state.edu> wrote in message
> >> news:mailman.33.1174365301.1359.opensource at cse.ohio-state.edu...
> >> > Hi Brian,
> >> >
> >> > I think that line 592 might be the source of your bug:
> >> >
> >> > ----
> >> > if (sideDeck)
> >> > oldPosition = random.nextInt(deckLength-16)+1;
> >> > ----
> >> >
> >> > It looks like decklength is already adjusted above so
> >> subtracting 16 may
> >> > be redundant.
> >> >
> >> > A couple other pointers:
> >> >
> >> > You should consider making a Deck class rather than storing
> >> everything> in a string array. This class can contain the boolean
> >> "sideDeck" and
> >> > any other deck info.
> >> >
> >> > You should also create a Card class that has fields for all of
> >> the card
> >> > data.
> >> >
> >> > Once you have this Card class, you can store all of the cards
> in the
> >> > Deck class as a list of Card objects. I'm a bit out of date on
> >> the Java
> >> > API so maybe someone else can suggest a better alternative, but
> >> I would
> >> > consider using a Vector<Card> (Vector of Cards) to store the
> deck.>> >
> >> > Good luck,
> >> > ~Jim.
> >> >
> >> > BRIAN SWANEY wrote:
> >> >> I am working on a Java code that shuffles a deck of Yu-Gi-Oh
> >> cards (a
> >> >> rather complicated game; see
> >> >>
> >>
> https://www.upperdeckentertainment.com/yugioh/en/gameplay/rulebook/rulebook_v06_EN.pdf>> >> for details on the rules), and have mostly formatted the
> >> display of cards
> >> >> by now, but cannot shuffle the deck. I probably don't
> >> understand the
> >> >> random seed syntax.
> >> >>
> >> >> My algorithm involves listing cards from 1 to 40, randomly
> >> selecting a
> >> >> card from that list, copying it in sequence onto a second list,
> >> then
> >> >> blanking out the previous card position to note that it was
> >> already
> >> >> taken. It seems that no matter what I enter as the seed, it
> >> doesn't go
> >> >> through all the cards and only repeats things that it already
> >> took (like
> >> >> 32 to 35 out of 40 cards). Can anyone with a bit of spare time
> >> and
> >> >> acceptance of newbies look it over and give me some
> >> (appreciated) advice?
> >> >>
> >> >> PS - Sorry that the methods are not too organized...
> >> >>
> >> >> -Brian Swaney
> >> >>
> >> >>
> >> >> -------------------------------------------------------------
> ---
> >> --------
> >> >>
> >> >> _______________________________________________
> >> >> Opensource mailing list
> >> >> Opensource at cse.ohio-state.edu
> >> >> http://mail.cse.ohio-state.edu/mailman/listinfo/opensource
> >> >
> >> >
> >> > --
> >> > James Dinan <dinan at cse.ohio-state.edu>
> >> >
> >> > Graduate RA - Computer Science and Engineering
> >> > The Ohio State University
> >>
> >>
> >> _______________________________________________
> >> Opensource mailing list
> >> Opensource at cse.ohio-state.edu
> >> http://mail.cse.ohio-state.edu/mailman/listinfo/opensource
> >>
> >
> >
> >
>
>
> _______________________________________________
> Opensource mailing list
> Opensource at cse.ohio-state.edu
> http://mail.cse.ohio-state.edu/mailman/listinfo/opensource
>
More information about the Opensource
mailing list