如何在C中的两个数字之间生成随机数? (核心)

How to generate random number between two numbers in C? (Kernel)

我想在 C(内核)中的两个数字之间生成随机数。在带有标准库的 C 中很容易,但在没有库的 C 中,我只是找到了这个链接:link 1, link 2 我不知道如何使用链接中的代码。

我无法显示我的代码。因为我的代码太长了(+1000行代码)。

编辑

这是我的不完整代码:

#include <lib.h>

int rand()
{
    unsigned long int next = 1;
    next = next * 1103515245 + 12345;
    return (unsigned int)(next / 65536) % (RAND_MAX + 1);
}

int rrand(int min, int max)
{
    /* incomplete */
}

lib.h:

#ifndef _LIB_H
# define _LIB_H
#endif

#ifdef _LIB_H
# ifndef _DEF_H /* this line isn't important for this question */
#  include <def.h> /* this line isn't important for this question */
# endif

# define RAND_MAX 32767
extern int rand();
extern int rrand(int min, int max);
extern void *malloc(size_t size); /* this line isn't important for this question */
extern int atoi(char *str); /* this line isn't important for this question */
extern char *itoa(int value, char *str, int base); /* this line isn't important for this question */
#endif

编辑 2

我可以毫无错误地编译我的代码。

我通常做一个函数来生成一个随机数,不超过 n

unsigned randto(unsigned n) {
    unsigned r, hi = (RAND_MAX / n) * n; // avoid
    do r = rand(); while (r >= hi);      // bias
    return r % n;
}

有了这个功能(当然还有rand()),你可以轻松写出你的rrand()

unsigned rrand(unsigned lo, unsigned hi) {
    return lo + randto(hi - lo + 1);
}