| /* |
| * R : A Computer Language for Statistical Data Analysis |
| * Copyright (C) 1998-2019 The R Core Team |
| * |
| * This header file is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU Lesser General Public License as published by |
| * the Free Software Foundation; either version 2.1 of the License, or |
| * (at your option) any later version. |
| * |
| * This file is part of R. R is distributed under the terms of the |
| * GNU General Public License, either Version 2, June 1991 or Version 3, |
| * June 2007. See doc/COPYRIGHTS for details of the copyright status of R. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public License |
| * along with this program; if not, a copy is available at |
| * https://www.R-project.org/Licenses/ |
| */ |
| |
| /* Included by R.h: API */ |
| |
| #ifndef R_RANDOM_H |
| #define R_RANDOM_H |
| |
| #include <R_ext/Boolean.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef enum { |
| WICHMANN_HILL, |
| MARSAGLIA_MULTICARRY, |
| SUPER_DUPER, |
| MERSENNE_TWISTER, |
| KNUTH_TAOCP, |
| USER_UNIF, |
| KNUTH_TAOCP2, |
| LECUYER_CMRG |
| } RNGtype; |
| |
| /* Different kinds of "N(0,1)" generators :*/ |
| typedef enum { |
| BUGGY_KINDERMAN_RAMAGE, |
| AHRENS_DIETER, |
| BOX_MULLER, |
| USER_NORM, |
| INVERSION, |
| KINDERMAN_RAMAGE |
| } N01type; |
| |
| /* Different ways to generate discrete uniform samples */ |
| typedef enum { |
| ROUNDING, |
| REJECTION |
| } Sampletype; |
| Sampletype R_sample_kind(); |
| |
| void GetRNGstate(void); |
| void PutRNGstate(void); |
| |
| double unif_rand(void); |
| double R_unif_index(double); |
| /* These are also defined in Rmath.h */ |
| double norm_rand(void); |
| double exp_rand(void); |
| |
| typedef unsigned int Int32; |
| double * user_unif_rand(void); |
| void user_unif_init(Int32); |
| int * user_unif_nseed(void); |
| int * user_unif_seedloc(void); |
| |
| double * user_norm_rand(void); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* R_RANDOM_H */ |