Skip to content

Commit 258d5bc

Browse files
committed
Merge pull request #40 from bashtage/randomkit-refactor
REF: Refactor randomkit
2 parents ee476cf + 91709d6 commit 258d5bc

File tree

12 files changed

+34
-44
lines changed

12 files changed

+34
-44
lines changed

randomstate/distributions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ extern double random_triangular(aug_state *state, double left, double mode, doub
108108

109109
extern long random_poisson(aug_state *state, double lam);
110110

111-
extern long rk_negative_binomial(aug_state *state, double n, double p);
111+
extern long random_negative_binomial(aug_state *state, double n, double p);
112112

113113
extern long random_binomial(aug_state *state, double p, long n);
114114

randomstate/interface/dSFMT/dSFMT-shim.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#define RNG_TYPE rk_state
2-
31
#ifdef _WIN32
42
#include "../../src/common/stdint.h"
53
#define inline __forceinline

randomstate/interface/pcg-32/pcg-32-shim.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#define RNG_TYPE pcg32_random_t
2-
31
#include <stdint.h>
42
#include "../../src/common/binomial.h"
53
#include "../../src/common/entropy.h"

randomstate/interface/pcg-64/pcg-64-shim.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#define RNG_TYPE pcg64_random_t
2-
31
#ifdef _WIN32
42
#include "../../src/common/inttypes.h"
53
#define inline __forceinline

randomstate/interface/random-kit/random-kit-shim.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ extern inline uint64_t random_uint64(aug_state* state);
66

77
extern inline double random_double(aug_state* state);
88

9-
extern void set_seed_by_array(aug_state* state, unsigned long init_key[], int key_length)
9+
void set_seed_by_array(aug_state* state, uint32_t *init_key, int key_length)
1010
{
11-
init_by_array(state->rng, init_key, key_length);
11+
randomkit_init_by_array(state->rng, init_key, key_length);
1212
}
1313

1414
void set_seed(aug_state* state, uint32_t seed)
1515
{
16-
rk_seed(state->rng, seed);
16+
randomkit_seed(state->rng, seed);
1717
}
1818

1919
void entropy_init(aug_state* state)

randomstate/interface/random-kit/random-kit-shim.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#define RNG_TYPE rk_state
2-
31
#ifdef _WIN32
42
#include "../../src/common/stdint.h"
53
#define inline __forceinline
@@ -12,7 +10,7 @@
1210
#include "../../src/random-kit/random-kit.h"
1311

1412
typedef struct s_aug_state {
15-
rk_state *rng;
13+
randomkit_state *rng;
1614
binomial_t *binomial;
1715

1816
int has_gauss, shift_zig_random_int, has_uint32;
@@ -23,12 +21,12 @@ typedef struct s_aug_state {
2321

2422
inline uint32_t random_uint32(aug_state* state)
2523
{
26-
return rk_random(state->rng);
24+
return randomkit_random(state->rng);
2725
}
2826

2927
inline uint64_t random_uint64(aug_state* state)
3028
{
31-
return (((uint64_t) rk_random(state->rng)) << 32) | rk_random(state->rng);
29+
return (((uint64_t) randomkit_random(state->rng)) << 32) | randomkit_random(state->rng);
3230
}
3331

3432
inline double random_double(aug_state* state)
@@ -39,7 +37,7 @@ inline double random_double(aug_state* state)
3937

4038
extern void entropy_init(aug_state* state);
4139

42-
extern void set_seed_by_array(aug_state* state, unsigned long init_key[], int key_length);
40+
extern void set_seed_by_array(aug_state* state, uint32_t *init_key, int key_length);
4341

4442
extern void set_seed(aug_state* state, uint32_t seed);
4543

randomstate/interface/random-kit/random-kit.pxi

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ ctypedef uint32_t rng_state_t
77

88
cdef extern from "distributions.h":
99

10-
cdef struct s_rk_state:
10+
cdef struct s_randomkit_state:
1111
uint32_t key[RK_STATE_LEN]
1212
int pos
1313

14-
ctypedef s_rk_state rk_state
14+
ctypedef s_randomkit_state randomkit_state
1515

1616
cdef struct s_aug_state:
17-
rk_state *rng
17+
randomkit_state *rng
1818
binomial_t *binomial
1919

2020
int has_gauss, shift_zig_random_int, has_uint32
@@ -26,11 +26,9 @@ cdef extern from "distributions.h":
2626

2727
cdef void set_seed(aug_state* state, uint32_t seed)
2828

29-
cdef void set_seed_by_array(aug_state* state, unsigned long init_key[], int key_length)
29+
cdef void set_seed_by_array(aug_state* state, uint32_t *init_key, int key_length)
3030

31-
32-
33-
ctypedef rk_state rng_t
31+
ctypedef randomkit_state rng_t
3432

3533
cdef object _get_state(aug_state state):
3634
cdef uint32_t [:] key = np.zeros(RK_STATE_LEN, dtype=np.uint32)

randomstate/randomstate.pyx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ cdef class RandomState:
216216
RandomState
217217
218218
"""
219-
# cdef ndarray obj "arrayObject_obj"
219+
cdef np.ndarray obj
220220
try:
221221
if seed is None:
222222
self.__seed = seed = _generate_seed(1)
@@ -232,10 +232,10 @@ cdef class RandomState:
232232
obj = np.asarray(seed).astype(np.int64, casting='safe')
233233
if ((obj > int(2**32 - 1)) | (obj < 0)).any():
234234
raise ValueError("Seed must be between 0 and 4294967295")
235-
obj = obj.astype('L', casting='unsafe')
235+
obj = obj.astype(np.uint32, casting='unsafe', order='C')
236236
with self.lock:
237237
set_seed_by_array(&self.rng_state,
238-
<unsigned long *>np.PyArray_DATA(obj),
238+
<uint32_t*> obj.data,
239239
np.PyArray_DIM(obj, 0))
240240
self._reset_state_variables()
241241

randomstate/src/random-kit/random-kit-test-gen.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ int main(void)
66
{
77
int i;
88
uint32_t temp, seed = 1UL;
9-
rk_state state = {{ 0 }};
10-
rk_seed(&state, seed);
9+
randomkit_state state = {{ 0 }};
10+
randomkit_seed(&state, seed);
1111

1212
FILE *fp;
1313
fp = fopen("randomkit-testset-1.csv", "w");
@@ -18,14 +18,14 @@ int main(void)
1818
fprintf(fp, "seed, %" PRIu32 "\n", seed);
1919
for (i=0; i < 1000; i++)
2020
{
21-
temp = rk_random(&state);
21+
temp = randomkit_random(&state);
2222
fprintf(fp, "%d, %" PRIu32 "\n", i, temp);
2323
printf("%d, %" PRIu32 "\n", i, temp);
2424
}
2525
fclose(fp);
2626

2727
seed = 123456789UL;
28-
rk_seed(&state, seed);
28+
randomkit_seed(&state, seed);
2929
fp = fopen("randomkit-testset-2.csv", "w");
3030
if(fp == NULL){
3131
printf("Couldn't open file\n");
@@ -34,7 +34,7 @@ int main(void)
3434
fprintf(fp, "seed, %" PRIu32 "\n", seed);
3535
for (i=0; i < 1000; i++)
3636
{
37-
temp = rk_random(&state);
37+
temp = randomkit_random(&state);
3838
fprintf(fp, "%d, %" PRIu32 "\n", i, temp);
3939
printf("%d, %" PRIu32 "\n", i, temp);
4040
}

randomstate/src/random-kit/random-kit.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#include "random-kit.h"
22

3-
extern inline uint32_t rk_random(rk_state *state);
3+
extern inline uint32_t randomkit_random(randomkit_state *state);
44

5-
void rk_seed(rk_state *state, uint32_t seed)
5+
void randomkit_seed(randomkit_state *state, uint32_t seed)
66
{
77
int pos;
88
seed &= 0xffffffffUL;
@@ -17,7 +17,7 @@ void rk_seed(rk_state *state, uint32_t seed)
1717

1818

1919
/* initializes mt[RK_STATE_LEN] with a seed */
20-
static void init_genrand(rk_state *state, unsigned long s)
20+
static void init_genrand(randomkit_state *state, uint32_t s)
2121
{
2222
int mti;
2323
uint32_t *mt = state->key;
@@ -44,7 +44,7 @@ static void init_genrand(rk_state *state, unsigned long s)
4444
* init_key is the array for initializing keys
4545
* key_length is its length
4646
*/
47-
extern void init_by_array(rk_state *state, unsigned long init_key[], int key_length)
47+
void randomkit_init_by_array(randomkit_state *state, uint32_t *init_key, int key_length)
4848
{
4949
/* was signed in the original code. RDH 12/16/2002 */
5050
int i = 1;
@@ -84,7 +84,7 @@ extern void init_by_array(rk_state *state, unsigned long init_key[], int key_len
8484
mt[0] = 0x80000000UL; /* MSB is 1; assuring non-zero initial array */
8585
}
8686

87-
void rk_gen(rk_state *state)
87+
void randomkit_gen(randomkit_state *state)
8888
{
8989
uint32_t y;
9090
int i;

0 commit comments

Comments
 (0)