src/glprng.h
author Alpar Juttner <alpar@cs.elte.hu>
Mon, 06 Dec 2010 13:09:21 +0100
changeset 1 c445c931472f
permissions -rw-r--r--
Import glpk-4.45

- Generated files and doc/notes are removed
alpar@1
     1
/* glprng.h (pseudo-random number generator) */
alpar@1
     2
alpar@1
     3
/***********************************************************************
alpar@1
     4
*  This code is part of GLPK (GNU Linear Programming Kit).
alpar@1
     5
*
alpar@1
     6
*  Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
alpar@1
     7
*  2009, 2010 Andrew Makhorin, Department for Applied Informatics,
alpar@1
     8
*  Moscow Aviation Institute, Moscow, Russia. All rights reserved.
alpar@1
     9
*  E-mail: <mao@gnu.org>.
alpar@1
    10
*
alpar@1
    11
*  GLPK is free software: you can redistribute it and/or modify it
alpar@1
    12
*  under the terms of the GNU General Public License as published by
alpar@1
    13
*  the Free Software Foundation, either version 3 of the License, or
alpar@1
    14
*  (at your option) any later version.
alpar@1
    15
*
alpar@1
    16
*  GLPK is distributed in the hope that it will be useful, but WITHOUT
alpar@1
    17
*  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
alpar@1
    18
*  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
alpar@1
    19
*  License for more details.
alpar@1
    20
*
alpar@1
    21
*  You should have received a copy of the GNU General Public License
alpar@1
    22
*  along with GLPK. If not, see <http://www.gnu.org/licenses/>.
alpar@1
    23
***********************************************************************/
alpar@1
    24
alpar@1
    25
#ifndef GLPRNG_H
alpar@1
    26
#define GLPRNG_H
alpar@1
    27
alpar@1
    28
typedef struct RNG RNG;
alpar@1
    29
alpar@1
    30
struct RNG
alpar@1
    31
{     /* Knuth's portable pseudo-random number generator */
alpar@1
    32
      int A[56];
alpar@1
    33
      /* pseudo-random values */
alpar@1
    34
      int *fptr;
alpar@1
    35
      /* the next A value to be exported */
alpar@1
    36
};
alpar@1
    37
alpar@1
    38
#define rng_create_rand _glp_rng_create_rand
alpar@1
    39
RNG *rng_create_rand(void);
alpar@1
    40
/* create pseudo-random number generator */
alpar@1
    41
alpar@1
    42
#define rng_init_rand _glp_rng_init_rand
alpar@1
    43
void rng_init_rand(RNG *rand, int seed);
alpar@1
    44
/* initialize pseudo-random number generator */
alpar@1
    45
alpar@1
    46
#define rng_next_rand _glp_rng_next_rand
alpar@1
    47
int rng_next_rand(RNG *rand);
alpar@1
    48
/* obtain pseudo-random integer in the range [0, 2^31-1] */
alpar@1
    49
alpar@1
    50
#define rng_unif_rand _glp_rng_unif_rand
alpar@1
    51
int rng_unif_rand(RNG *rand, int m);
alpar@1
    52
/* obtain pseudo-random integer in the range [0, m-1] */
alpar@1
    53
alpar@1
    54
#define rng_delete_rand _glp_rng_delete_rand
alpar@1
    55
void rng_delete_rand(RNG *rand);
alpar@1
    56
/* delete pseudo-random number generator */
alpar@1
    57
alpar@1
    58
#define rng_unif_01 _glp_rng_unif_01
alpar@1
    59
double rng_unif_01(RNG *rand);
alpar@1
    60
/* obtain pseudo-random number in the range [0, 1] */
alpar@1
    61
alpar@1
    62
#define rng_uniform _glp_rng_uniform
alpar@1
    63
double rng_uniform(RNG *rand, double a, double b);
alpar@1
    64
/* obtain pseudo-random number in the range [a, b] */
alpar@1
    65
alpar@1
    66
#endif
alpar@1
    67
alpar@1
    68
/* eof */