> Hi, man ksh says:
> 
>      RANDOM     A random number generator.  Every time RANDOM is referenced,
>                 it is assigned the next random number in the range 0-32767.
>                 By default, arc4random(3) is used to produce values.  If the
>                 variable RANDOM is assigned a value, the value is used as the
>                 seed to srand(3) and subsequent references of RANDOM will use
>                 rand(3) to produce values, resulting in a predictable
>                 sequence.
> 
> however, man srand says:
> 
>      To satisfy portable code, srand() may be called to initialize the
>      subsystem.  In OpenBSD the seed variable is ignored, and strong random
>      number results will be provided from arc4random(3).  In other systems,
>      the seed variable primes a simplistic deterministic algorithm.
> 
>      If the standardized behavior is required srand_deterministic() can be
>      substituted for srand(), then subsequent rand() calls will return results
>      using the deterministic algorithm.
> 

And the part you missed from the ksh source code:

static void
setspec(struct tbl *vp)
{
...
        case V_RANDOM:
                vp->flag &= ~SPECIAL;
                srand_deterministic((unsigned int)intval(vp));
                vp->flag |= SPECIAL;
                break;

setspec is called when a "special" variable is assigned to.  If
RANDOM is assigned to, it does what the manual page says. 

Careful with your allegations, ok?

Reply via email to