Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.sys.apple2.programmer > #2429

Re: Streamlining Applesoft - Random number generators

From Scott Hemphill <hemphill@hemphills.net>
Newsgroups comp.sys.apple2.programmer
Subject Re: Streamlining Applesoft - Random number generators
References (7 earlier) <xaudncrlbLxK-EvLnZ2dnUU7-LfNnZ2d@giganews.com> <6d52de94-fc33-423d-abdb-fad2ec5af67e@googlegroups.com> <ysydnSecMKD8iUTLnZ2dnUU7-LHNnZ2d@giganews.com> <b798ece7-5b0d-44d6-ab1d-aee6dee0e8ab@googlegroups.com> <7NadnThcNNnNrUTLnZ2dnUU7-KfNnZ2d@giganews.com>
Date 2016-03-04 10:47 -0500
Message-ID <87ziue2qke.fsf@hemphills.net> (permalink)

Show all headers | View raw


Michael J. Mahon <mjmahon@aol.com> writes:

> <gids.rs@sasktel.net> wrote:
>>>> Thanks Michael! That's *exactly* the code I was thinking of -- just
>>>> couldn't remember the name (or location).
>>>> 
>>>> Pity that AppleSoft doesn't use the 16-bit RNDL and RNDH as part
>>>> of its seed. :-/
>>> 
>>> When debugging, you want deterministic pseudorandom numbers.  You can
>>> always PEEK the GETCHR counter and use it to seed RND if you want a
>>> different set each time. 
>>> 
>>> By default, RND delivers the same sequence each time after a cold start
>>> (assuming that the uninitialized low byte of the seed powers up in the same
>>> state ;-).
>>> 
>>> If you really want to be sure the same sequence occurs on each run, you
>>> should seed RND at the start of your program, though a good fraction of
>>> seeds seem to deliver a modest pseudorandom sequence followed by a short
>>> cycle...
>> 
>> 
>> For the IIGS anyways, I think the VBL and HBL would be an excellent
>> source for a seed on startup.  These values are always random and when
>> used in conjunction with RNDL and RNDH can give a 4-byte random seed, and
>> you can even give a random key press for a 5th byte, different every
>> time on bootup.
>> 
>> I use this for a 5 byte random seed in Sweet 16 and GSPORT and real IIGS.
>> I believe this should work in a IIc as well but not II+ or IIe's
>> standard or enhanced.
>> 
>> ]LOOP INC $4E
>>  BNE NOTHI
>>  INC $4F
>> NOTHI BIT $C000
>>  BPL ]LOOP
>>  LDA $C010
>>  STA $C9
>>  LDX $C02E
>>  LDA $C02F
>>  STX $CD
>>  STA $CC
>>  LDA $4E
>>  LDX $4F
>>  STA $CB
>>  STX $C9
>> ...
>> 
>> 
>> test to see if your computer's VBL or HBL gives values with this:
>> 
>> 300: LDX $C02E
>>  LDA $C02F
>>  JSR $F941
>>  BIT $C000
>>  BPL $300
>>  BIT $C010
>>  RTS
>> 
>
> When you seed a random number generator you are only selecting a point in
> the generators cycle where you want to start. 
>
> A good generator will have a very long cycle, but every generator has at
> least one cycle, and a good generator has only one, maximal length cycle.  
>
> So if you have a two-byte seed, you are randomly selecting one of 2^16
> starting points in the cycle. A longer seed does not make the numbers more
> random, it just selects from a larger number of starting points. The
> quality of a PRNG is not determined by its seed, but only by its algorithm.
>
>
> I'd guess that 2^16 different sequences of pseudorandom numbers is more
> than enough for any application. 
>
> In the case of Applesoft's RND generator, it is so riddled with short
> cycles that seeding with a random (and therefore untested) seed has a high
> probability of producing a short, degenerate sequence. Better to select
> from a small set of seeds that have been verified to generate at least a
> few thousand different numbers. 
>
> Of course, it's actually best to avoid RND entirely for any serious work. 

I used a high-quality linear congruential generator in my 3D tic-tac-toe
program.  I was just going to say something about it, and I found this
URL in my program comments:

http://www.6502.org/source/integers/random/random.html

Scott
-- 
Scott Hemphill	hemphill@alumni.caltech.edu
"This isn't flying.  This is falling, with style."  -- Buzz Lightyear

Back to comp.sys.apple2.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Streamlining Applesoft - Random number generators gids.rs@sasktel.net - 2016-02-28 21:02 -0800
  Re: Streamlining Applesoft - Random number generators qkumba <peter.ferrie@gmail.com> - 2016-02-29 09:05 -0800
  Re: Streamlining Applesoft - Random number generators wssimms@gmail.com - 2016-02-29 09:07 -0800
    Re: Streamlining Applesoft - Random number generators Michael Pohoreski <michael.pohoreski@gmail.com> - 2016-02-29 12:57 -0800
    Re: Streamlining Applesoft - Random number generators "Michael J. Mahon" <mjmahon@aol.com> - 2016-02-29 17:50 -0800
  Re: Streamlining Applesoft - Random number generators Michael Barry <barrym95838@yahoo.com> - 2016-02-29 17:44 -0800
    Re: Streamlining Applesoft - Random number generators gids.rs@sasktel.net - 2016-02-29 18:38 -0800
    Re: Streamlining Applesoft - Random number generators "Michael J. Mahon" <mjmahon@aol.com> - 2016-02-29 18:46 -0800
    Re: Streamlining Applesoft - Random number generators wssimms@gmail.com - 2016-02-29 18:53 -0800
      Re: Streamlining Applesoft - Random number generators Michael Barry <barrym95838@yahoo.com> - 2016-03-01 00:11 -0800
        Re: Streamlining Applesoft - Random number generators wssimms@gmail.com - 2016-03-01 05:17 -0800
        Re: Streamlining Applesoft - Random number generators Michael J. Mahon <mjmahon@aol.com> - 2016-03-01 10:38 -0600
          Re: Streamlining Applesoft - Random number generators qkumba <peter.ferrie@gmail.com> - 2016-03-01 11:56 -0800
            Re: Streamlining Applesoft - Random number generators Michael Pohoreski <michael.pohoreski@gmail.com> - 2016-03-01 12:13 -0800
            Re: Streamlining Applesoft - Random number generators Michael J. Mahon <mjmahon@aol.com> - 2016-03-01 15:32 -0600
              Re: Streamlining Applesoft - Random number generators qkumba <peter.ferrie@gmail.com> - 2016-03-01 22:47 -0800
          Re: Streamlining Applesoft - Random number generators Michael J. Mahon <mjmahon@aol.com> - 2016-03-01 17:28 -0600
            Re: Streamlining Applesoft - Random number generators Michael Pohoreski <michael.pohoreski@gmail.com> - 2016-03-01 18:50 -0800
              Re: Streamlining Applesoft - Random number generators "Michael J. Mahon" <mjmahon@aol.com> - 2016-03-01 19:25 -0800
                Re: Streamlining Applesoft - Random number generators gids.rs@sasktel.net - 2016-03-01 22:03 -0800
                Re: Streamlining Applesoft - Random number generators "Michael J. Mahon" <mjmahon@aol.com> - 2016-03-02 20:49 -0800
                Re: Streamlining Applesoft - Random number generators "Michael J. Mahon" <mjmahon@aol.com> - 2016-03-03 14:48 -0800
              Re: Streamlining Applesoft - Random number generators "Michael J. Mahon" <mjmahon@aol.com> - 2016-03-01 20:02 -0800
                Re: Streamlining Applesoft - Random number generators Michael Pohoreski <michael.pohoreski@gmail.com> - 2016-03-03 07:48 -0800
                Re: Streamlining Applesoft - Random number generators gids.rs@sasktel.net - 2016-03-03 08:05 -0800
                Re: Streamlining Applesoft - Random number generators Michael Pohoreski <michael.pohoreski@gmail.com> - 2016-03-03 09:24 -0800
                Re: Streamlining Applesoft - Random number generators Michael J. Mahon <mjmahon@aol.com> - 2016-03-03 22:51 -0600
                Re: Streamlining Applesoft - Random number generators gids.rs@sasktel.net - 2016-03-03 21:34 -0800
                Re: Streamlining Applesoft - Random number generators Michael J. Mahon <mjmahon@aol.com> - 2016-03-04 00:50 -0600
                Re: Streamlining Applesoft - Random number generators Scott Hemphill <hemphill@hemphills.net> - 2016-03-04 10:47 -0500
                Re: Streamlining Applesoft - Random number generators qkumba <peter.ferrie@gmail.com> - 2018-09-05 20:41 -0700
                Re: Streamlining Applesoft - Random number generators Antoine Vignau <antoine.vignau@laposte.net> - 2018-09-06 09:13 -0700
                Re: Streamlining Applesoft - Random number generators qkumba <peter.ferrie@gmail.com> - 2018-09-06 10:33 -0700
                Re: Streamlining Applesoft - Random number generators Michael J. Mahon <mjmahon@aol.com> - 2018-09-06 17:58 -0500
  Re: Streamlining Applesoft - Random number generators John Brooks <jbrooks@blueshiftinc.com> - 2018-09-06 22:26 -0700
    Re: Streamlining Applesoft - Random number generators John Brooks <jbrooks@blueshiftinc.com> - 2018-09-07 18:08 -0700
    Re: Streamlining Applesoft - Random number generators John Brooks <jbrooks@blueshiftinc.com> - 2018-09-07 18:11 -0700
  Re: Streamlining Applesoft - Random number generators the.ertceps@gmail.com - 2018-09-29 05:03 -0700
    Re: Streamlining Applesoft - Random number generators James Davis <JPD.Enterprises@outlook.com> - 2018-09-29 10:24 -0700
      Re: Streamlining Applesoft - Random number generators Marco Verpelli <mverpelli@libero.it> - 2018-09-29 10:30 -0700
      Re: Streamlining Applesoft - Random number generators Brian Patrie <bpatrie@bellsouth.spamisicky.net> - 2018-09-29 12:36 -0500
        Re: Streamlining Applesoft - Random number generators Michael J. Mahon <mjmahon@aol.com> - 2018-09-29 12:41 -0500
          Re: Streamlining Applesoft - Random number generators Andy McFadden <thefadden@gmail.com> - 2018-09-29 21:06 -0700
          Re: Streamlining Applesoft - Random number generators James Davis <JPD.Enterprises@outlook.com> - 2018-09-30 19:28 -0700
            Re: Streamlining Applesoft - Random number generators "Frank M." <frank_o_rama@hotmail.com> - 2018-10-01 07:27 -0700

csiph-web