C语言和C++编程语言提供 rand()
和 srand()
函数以创建随机数。在本教程中,我们将学习如何使用随机数生成函数 rand()
和 srand()
他们的特点和特长。
随机数
随机数是连续的 总是有不同的数字。随机数对于安全性非常重要,可用于生成UUID、证书、密码等。为了生成随机数,我们通常需要一个基于硬件的源,用于生成随机信号,其中这些信号将用于生成随机数。有专门用来产生这些随机信号的硬件组件。
伪随机数
因为使用基于硬件的随机数发生器是昂贵的或不总是 可获得的 我们通常使用随机信号发生器。如果我们使用这种不完全随机数发生器,我们称之为伪随机数 发电机数量。例如,网络接口卡、声卡或类似硬件可以用作伪随机数发生器。
种子价值
因为创造随机性是一项非常困难的工作,我们可以提供 Seed
对于每个随机函数执行 创造随机性。种子值用于从应用程序的角度进行随机启动。每次我们都需要使用不同的种子值使其完美。我们通常使用时间、网络流量等功能,这些功能会定期变化。
最大兰特
在生成随机数时,我们需要设置一些开始和结束限制。起始限制为0,但可以使用 RAND_MAX
宏如下所示。
#define RAND_MAX 100
rand()函数
rand()
函数用于创建没有任何参数的随机数。这将在同一执行期间在每次运行中创建相同的序列。
#include #include int main(void) {for(int i = 0; i<10; i++) printf(" %d ", rand()); printf("");return 0; }

我们每次打电话都能看到 rand()
函数我们得到相同的随机数。
相关文章: 如何在PHP中随机排列数组
srand()函数
srand()
函数确实生成伪随机整数。 我们还将提供一个无符号整数形式的种子值。我们将使种子值成为 time(0)
每次执行应用程序时都会不同的函数。
#include #include #include int main(void) { srand(time(0)); for(int i = 0; i<10; i++) printf(" %d ", rand()); printf(""); return 0; }

我们可以看到,每次调用随机函数,我们都会得到一个完全随机的值。
rand()函数vs srand()函数
rand()
和 srand()
功能非常相似。 rand()
函数实际调用 srand(1)
会产生相同的随机数序列。
指定 不同的随机数范围
我们学会了 RAND_MAX
限制生成的随机数。但起始号码是
. 我们可以通过使用C和C++编程语言的MOD操作来具体定义一个开始和最大数。
#include #include #include int main(void) { srand(time(0)); for(int i = 0; i<10; i++) printf(" %d ", (rand()%100)-20); printf(""); return 0; }
