# PetscRandomCreate

Creates a context for generating random numbers, and initializes the random-number generator.

### Synopsis

    #include "petscsys.h"
    int PetscRandomCreate(MPI_Comm comm,PetscRandomType type,PetscRandom *r)

Collective on MPI_Comm

### Input Parameters

| comm | - MPI communicator
| type | - the type of random numbers to be generated, usually RANDOM_DEFAULT

### Output Parameter

r -the random number generator context

### Notes

By default, we generate random numbers via srand48()/drand48() that are uniformly distributed over [0,1). The user can shift and stretch this interval by calling PetscRandomSetInterval().

Currently three types of random numbers are supported. These types are equivalent when working with real numbers.

RANDOM_DEFAULT -both real and imaginary components are random
RANDOM_DEFAULT_REAL -real component is random; imaginary component is 0
RANDOM_DEFAULT_IMAGINARY -imaginary component is random; real component is 0

Use VecSetRandom() to set the elements of a vector to random numbers.

### Example of Usage

          PetscRandomCreate(PETSC_COMM_SELF,RANDOM_DEFAULT,&r);
          PetscRandomGetValue(r,&value1);
          PetscRandomGetValue(r,&value2);
          PetscRandomGetValue(r,&value3);
          PetscRandomDestroy(r);

### See Also

PetscRandomGetValue(), PetscRandomSetInterval(), PetscRandomDestroy(), VecSetRandom()

Level:intermediate
Location: src/sys/src/utils/random.c
Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages

### Examples

src/ksp/examples/tutorials/ex2.c.html
src/ksp/examples/tutorials/ex4.c.html
src/ksp/examples/tutorials/ex11.c.html
src/ksp/examples/tutorials/ex2f.F.html
src/ksp/examples/tutorials/ex11f.F.html