[BACK]Return to random.c CVS log [TXT][DIR] Up to [Development] / performer / src / lib / libpfutil

File: [Development] / performer / src / lib / libpfutil / random.c (download)

Revision 1.1, Tue Nov 21 21:39:36 2000 UTC (16 years, 10 months ago) by flynnt
Branch: MAIN
CVS Tags: HEAD

Initial check-in based on OpenGL Performer 2.4 tree.
-flynnt

/*
 * Copyright 1993, 1994, 1995, Silicon Graphics, Inc.
 * ALL RIGHTS RESERVED
 *
 * UNPUBLISHED -- Rights reserved under the copyright laws of the United
 * States.   Use of a copyright notice is precautionary only and does not
 * imply publication or disclosure.
 *
 * U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:
 * Use, duplication or disclosure by the Government is subject to restrictions
 * as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights
 * in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or
 * in similar or successor clauses in the FAR, or the DOD or NASA FAR
 * Supplement.  Contractor/manufacturer is Silicon Graphics, Inc.,
 * 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.
 *
 * THE CONTENT OF THIS WORK CONTAINS CONFIDENTIAL AND PROPRIETARY
 * INFORMATION OF SILICON GRAPHICS, INC. ANY DUPLICATION, MODIFICATION,
 * DISTRIBUTION, OR DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY
 * PROHIBITED WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SILICON
 * GRAPHICS, INC.
 */

/*
 * random.c: $Revision: 1.1 $ $Date: 2000/11/21 21:39:36 $
 */

#include <stdlib.h>
#include <unistd.h>
#include <math.h>

#ifndef __linux__  /* already defined in stdlib.h */
#ifdef  _POSIX_SOURCE
extern long random(void);
extern int srandom(int seed);
#endif
#endif

#include <Performer/pf.h>
#include <Performer/pfutil.h>

/*
 * FUNCTION:
 *	pfuRandomize
 *
 * DESCRIPTION:
 *	reset the random number generator to a known state.
 */
extern void
pfuRandomize (int seed)
{
    srandom(seed);
}

extern long
pfuRandomLong (void)
{
    return random();
}

extern float
pfuRandomFloat (void)
{
    return (float)(pfuRandomLong() & 0xffff)/65535.0f;
}

/*
 * FUNCTION:
 *	pfuRandomColor
 *
 * DESCRIPTION:
 *	pick a random color within a designated range.
 */
extern void
pfuRandomColor (pfVec4 rgba, float minColor, float maxColor)
{
    if (rgba != NULL)
    {
	rgba[0] = minColor + (maxColor - minColor)*pfuRandomFloat();
	rgba[1] = minColor + (maxColor - minColor)*pfuRandomFloat();
	rgba[2] = minColor + (maxColor - minColor)*pfuRandomFloat();
	rgba[3] = 1.0f;
    }
}