× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



At a cable TV company that I worked at we used a random number to select a
customer account number on a monthly basis.  The selected account won a free
month subscription.  The selected number was checked against the delinquent,
employee and level of service tables prior to being accepted.



----- Original Message -----
From: <rob@dekko.com>
To: <RPG400-L@midrange.com>
Sent: Wednesday, April 25, 2001 2:32 PM
Subject: RE: Random Number in PRG: example


>
> But don't we first need to find out why a random number is needed in the
> first place?  For example, shouldn't a UUID be used in many cases in which
> a random number is used?  UUID is great for a key because it's guaranteed
> to be unique across systems.  Check out the archives for UID in midrange-l
> and rpg400-l available at midrange.com.
> About the only thing I use a random number for is a password generator.
>
>
> Rob Berendt
>
> ==================
> Remember the Cole!
>
>
>
>                     Scott Klement
>                     <klemscot@klement        To:
"'RPG400-L@midrange.com'" <RPG400-L@midrange.com>
>                     s.com>                   cc:
>                     Sent by:                 Subject:     RE: Random
Number in PRG: example
>                     owner-rpg400-l@mi
>                     drange.com
>
>

>                     04/25/01 10:30 AM
>                     Please respond to
>                     RPG400-L
>
>
>
>
>
>
>
> On Wed, 25 Apr 2001, DeLong, Eric wrote:
>
> > True, I added the time seed shortly after posting the example, and I too
> > realized that Hans' example was repeating sequences.  It also occurs to
> me
> > that seeding by TIME (6.0) could be a bad idea is the program runs at
the
> > same time every night (scheduled job). It's not hard to imagine the same
> > seed value being used repeatedly...... perhaps something more random
like
> > milliseconds....
> >
> > > Caveat: every time you run this, you will get the same sequence of
> > > `random' numbers.  To get more truly pseudo-random numbers, seed the
> > > generator with (say) the result of the TIME opcode.
>
> Call me a purist, but...   time is about the LEAST random thing I can
> think of -- it follows a rather well-established pattern. :)
>
> It may be true that when I'm typing the command to run a program on my
> AS/400, I can't predict at what millisecond the program will run -- but
> if I were a computer program, or a job scheduler, etc, my program would
> run at a rather predictable time.
>
> Even if the time a job starts varies a little now, as computers get faster
> it'll become more and more consistent!
>
> Therefore, I like to stick elements from the JOB NUMBER and DATE into my
> seed as well as the milliseconds.  (Actually, I use microseconds) This
> makes me feel better. :)
>
> Here's an example:
>
>      H DFTACTGRP(*NO) ACTGRP(*NEW) BNDDIR('QC2LE')
>
>      D rand            PR            10I 0 extproc('rand')
>
>      D srand           PR                  extproc('srand')
>      D   seed                        10U 0 value
>
>      D gettimeofday    PR                  ExtProc('gettimeofday')
>      D   timeval                      8A
>      D   timezone                     8A
>
>      D timeval         DS
>      D   tv_secs                     10I 0
>      D   tv_usecs                    10I 0
>
>      D                sds
>      D  JobNo                264    269
>
>      D Junk            S              8A
>      D Epoch           S               Z
> INZ(z'1970-01-01-00.00.00.000000')
>      D UTC             S               Z
>      D Date            S               D
>      D Micro           S              6S 0
>      D DateStr         S             10A
>      D MicroStr        S              6A
>      D Seed            S             10U 0
>      D SeedStr         S             10A
>
>      D num             s             10I 0
>      D i               s             10I 0
>
>
>       ** get current time
>      c                   callp     gettimeofday(timeval: junk)
>
>       ** convert to a timestamp
>      c     Epoch         adddur    tv_secs:*S    UTC
>      c                   adddur    tv_usecs:*MS  UTC
>
>       ** get date & microseconds in a char string:
>      c                   move      UTC           Date
>      c     *ISO          move      Date          DateStr
>      c                   extrct    UTC:*MS       Micro
>      c                   move      Micro         MicroStr
>
>       ** make a seed
>      C                   eval      SeedStr = %subst(DateStr:  9: 1)
>      c                                     + %subst(MicroStr: 6: 1)
>      c                                     + %subst(JobNo:    6: 1)
>      c                                     + %subst(DateStr: 10: 1)
>      c                                     + %subst(MicroStr: 2: 1)
>      c                                     + %subst(JobNo:    5: 1)
>      c                                     + %subst(MicroStr: 1: 1)
>      c                                     + %subst(MicroStr: 3: 3)
>      c                   move      SeedStr       Seed
>
>      c                   callp     srand(Seed)
>
>      c                   for       i = 1 to 10
>      c                   eval      num = rand
>      c     num           dsply
>      c                   endfor
>
>      c                   eval      *inlr = *on
>
> +---
> | This is the RPG/400 Mailing List!
> | To submit a new message, send your mail to RPG400-L@midrange.com.
> | To subscribe to this list send email to RPG400-L-SUB@midrange.com.
> | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
> | Questions should be directed to the list owner/operator:
> david@midrange.com
> +---
>
>
>
> +---
> | This is the RPG/400 Mailing List!
> | To submit a new message, send your mail to RPG400-L@midrange.com.
> | To subscribe to this list send email to RPG400-L-SUB@midrange.com.
> | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
> | Questions should be directed to the list owner/operator:
david@midrange.com
> +---

+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.