aboutsummaryrefslogtreecommitdiff
path: root/random.h
diff options
context:
space:
mode:
authorThomas Schmucker <ts@its1.de>2020-07-22 17:30:45 +0200
committerThomas Schmucker <ts@its1.de>2020-07-22 17:30:45 +0200
commitac55496d881e0a17b3eff85f1faae5aafbc53b50 (patch)
tree65b954e994d7bbfc76bc959876e28f7ea9fa708c /random.h
downloaddata-structures-ac55496d881e0a17b3eff85f1faae5aafbc53b50.tar.gz
data-structures-ac55496d881e0a17b3eff85f1faae5aafbc53b50.tar.bz2
data-structures-ac55496d881e0a17b3eff85f1faae5aafbc53b50.zip
erster Commit
Diffstat (limited to 'random.h')
-rw-r--r--random.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/random.h b/random.h
new file mode 100644
index 0000000..9094d5b
--- /dev/null
+++ b/random.h
@@ -0,0 +1,47 @@
1#ifndef ITS1_RANDOM_H_INCLUDED
2#define ITS1_RANDOM_H_INCLUDED
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8struct random_ctx {
9 unsigned char (*get_byte)(struct random_ctx *ctx);
10};
11
12static unsigned char
13random_get_byte(struct random_ctx *ctx)
14{
15 return ctx->get_byte(ctx);
16}
17
18static unsigned short
19random_get_word(struct random_ctx *ctx)
20{
21 return (ctx->get_byte(ctx) << 8)
22 | ctx->get_byte(ctx)
23 ;
24}
25
26static unsigned long
27random_get_dword(struct random_ctx *ctx)
28{
29 return (ctx->get_byte(ctx) << 24)
30 | (ctx->get_byte(ctx) << 16)
31 | (ctx->get_byte(ctx) << 8)
32 | ctx->get_byte(ctx)
33 ;
34}
35
36static unsigned long
37random_get_dword_range(struct random_ctx *ctx, unsigned long l, unsigned long u)
38{
39 return l + random_get_dword(ctx) % (u - l + 1);
40}
41
42#ifdef __cplusplus
43}
44#endif
45
46#endif /* ITS1_RANDOM_H_INCLUDED */
47