Below are very "concise" guidelines for how to use "streams" in Csim in order to assure that the pseudo-random number streams generated for different purposes in a simulation (e.g., service times versus interarrival times) are as independent and non-interacting as possible. Step 1: Declare the streams. E.g. STREAM arrival_strm; STREAM service_strm; STREAM is a new data type to represent a separate random stream. It is actually a typedef to 'struct strm *', i.e. a pointer to an internal stream structure to track the next seed value to be used in the generation. Step 2: Initialize the streams. E.g. arrival_strm = stream_init (1L); service_strm = stream_init (3L); The function stream_init initializes a stream to an initial seed value (of type long) via the argument and returns a stream handle. Step 3: Calling the desired functions to generate the variates. E.g. stream_expntl (arrival_strm, IATM); stream_random (service_strm, MIN_ST, MAX_ST); The new functions mirror their non-stream counterparts. The calling convention is to prefix the old function with stream_ and to supply the stream identifier in the first argument. Stream variants are supported for at least the following distributions: stream_uniform stream_expntl stream_erlang stream_hyperx