38 lines
1.2 KiB
C
38 lines
1.2 KiB
C
// vim:fileencoding=utf-8:foldmethod=marker
|
|
|
|
#ifndef XORSHIFT_H
|
|
#define XORSHIFT_H
|
|
|
|
#include "../../common/aliases/aliases.h"
|
|
#include "../../common/platform/platform.h"
|
|
|
|
#ifdef WP_PLATFORM_CPP
|
|
BEGIN_C_LINKAGE
|
|
#endif // !WP_PLATFORM_CPP
|
|
|
|
typedef struct WpXor256State WpXor256State;
|
|
struct WpXor256State {
|
|
u64 x;
|
|
u64 y;
|
|
u64 z;
|
|
u64 w;
|
|
};
|
|
|
|
WpXor256State wpPrngXorshiftInit(void);
|
|
WpXor256State wpPrngXorshiftInitWithSeed(u64 seed);
|
|
u64 wpPrngXorshift256(WpXor256State *state);
|
|
u64 wpPrngXorshift256ss(WpXor256State *state);
|
|
u64 wpPrngXorshift256p(WpXor256State *state);
|
|
u64 wpPrngXorshift256InRange(WpXor256State *state, u64 start, u64 end);
|
|
u64 wpPrngXorshift256ssInRange(WpXor256State *state, u64 start, u64 end);
|
|
u64 wpPrngXorshift256pInRange(WpXor256State *state, u64 start, u64 end);
|
|
u64 wpPrngXorshift256Choice(WpXor256State *state, u64 available_choices);
|
|
u64 wpPrngXorshift256ssChoice(WpXor256State *state, u64 available_choices);
|
|
u64 wpPrngXorshift256pChoice(WpXor256State *state, u64 available_choices);
|
|
|
|
#ifdef WP_PLATFORM_CPP
|
|
END_C_LINKAGE
|
|
#endif // !WP_PLATFORM_CPP
|
|
|
|
#endif // !XORSHIFT_H
|