This is RandomIzer.m in view mode; [Download] [Up]
#import <musickit/musickit.h> #import "RandomIzer.h" @implementation RandomIzer:Object static double ranNum(id self) /* Returns a random number between 0 and 1. */ { #define RANDOMMAX (double)((long)MAXINT) double newVal; newVal = ((double)random()) / RANDOMMAX; return newVal; } static int ranInt(id self,int lowBound,int highBound) /* Returns a random int between the specified bounds (inclusive) */ { return ( ranNum(self) * (highBound - lowBound) + lowBound + .5); } static int initRan(void) /* Initialize random numbers with a random seed based on the time of day */ { # import <sys/time.h> #define STATESIZEINBYTES 256 struct timeval tp; unsigned seed; gettimeofday(&tp,NULL); seed = tp.tv_usec; srandom(seed); return (seed); } -setit /* This method should be invoked after a new instance is created. */ { initRan(); /* Initialize random number sequence */ return self; } -(double)GetNumber { return(ranNum(self)); } -(double)GetNumber:(double)scaler { return((ranNum(self)) * scaler); } -(double)GetNumberRangeHi:(double)hi Lo:(double)lo { return( (ranNum(self) * (hi-lo)) + lo ); } -(double)GetPlusMinus { return( (ranNum(self) * 2.0) - 1.0 ); } -(double)GetPlusMinus:(double)scaler { return( (ranNum(self) * (2.0 * scaler)) - (scaler/2.0) ); } -(int)GetIndex:(int)scaler { return(ranInt(self,0,scaler)); } -(int)GetIndexRangeHi:(int)hi Lo:(int)lo { return(ranInt(self,lo,hi)); } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.