使用线性同余法(Linear Congruential Generator)来生成伪随机数:
// 定义全局变量,用于保存随机数种子
unsigned int seed = 0;
// 随机数生成函数
unsigned int random(void)
{
// 线性同余法的参数
unsigned int a = 1103515245;
unsigned int c = 12345;
unsigned int m = 32768; // 或者其他适当的模数
// 生成新的随机数种子
seed = (a * seed + c) % m;
return seed;
}
要使用该随机数生成函数,需要先初始化种子,在合适的地方调用一次 srandom()
函数,例如:
// 初始化随机数种子
void srandom(unsigned int new_seed)
{
seed = new_seed;
}
然后,可以通过调用 random()
函数来获取随机数。例如:
unsigned int num = random();
代码片段使用种子 seed
来计算下一个随机数,并将其保存为新的种子值。请注意,初始种子值应足够随机,可以使用一些其他的方法来提供初始种子值,比如获取某个传感器值或时间戳