1、浅谈 C 语言中如何取随机数 级别: 初级1. 基本函数在 C 语言中取随机数所需要的函数是:int rand(void); void srand (unsigned int n);rand()函数和 srand()函数被声明在头文件 stdlib.h 中,所以要使用这两个函数必须包含该头文件:#include 2. 使用方法rand()函数返回 0 到 RAND_MAX 之间的伪随机数(pseudorandom)。RAND_MAX 常量被定义在 stdlib.h 头文件中。其值等于 32767,或者更大。srand()函数使用自变量 n 作为种子,用来初始化随机数产生器。只要把相同的种子传入
2、srand(),然后调用 rand()时,就会产生相同的随机数序列。因此,我们可以把时间作为srand()函数的种子,就可以避免重复的发生。如果,调用 rand()之前没有先调用 srand(),就和事先调用 srand(1)所产生的结果一样。举个例子,假设我们要取得 010 之间的随机整数(不含 10 本身):/* 例 1:不指定种子的值 */for (int i=0; i10; i+) printf(“%d “, rand()%10); 每次运行都将输出:1 7 4 0 9 4 8 8 2 4/* 例 2:指定种子的值为 1 */srand(1); for (int i=0; i10; i
3、+) printf(“%d “, rand()%10); 每次运行都将输出:1 7 4 0 9 4 8 8 2 4例 2 的输出结果与例 1 是完全一样的。/* 例 3:指定种子的值为 8 */ srand(8); for (int i=0; i10; i+) printf(“%d “, rand()%10); 每次运行都将输出:4 0 1 3 5 3 7 7 1 5该程序取得的随机值也是在0,10)之间,与 srand(1)所取得的值不同,但是每次运行程序的结果都相同。/* 例 4:指定种子值为现在的时间 */ srand(unsigned)time(NULL); for (int i=0;
4、 i10; i+) printf(“%d “, rand()%10); 该程序每次运行结果都不一样,因为每次启动程序的时间都不同。另外需要注意的是,使用 time()函数前必须包含头文件 time.h。3. 注意事项求一定范围内的随机数。 如要取0,10)之间的随机整数,需将 rand()的返回值与 10 求模。randnumber = rand() % 10;那么,如果取的值不是从 0 开始呢?你只需要记住一个通用的公式。要取a,b)之间的随机整数(包括 a,但不包括 b),使用:(rand() % (b - a) + a 伪随机浮点数。 要取得 01 之间的浮点数,可以用: rand() / (double)(RAND_MAX)如果想取更大范围的随机浮点数,比如 0100,可以采用如下方法:rand() /(double)(RAND_MAX)/100) 其他情况,以此类推,这里不作详细说明。当然,本文取伪随机浮点数的方法只是用来说明函数的使用办法,你可以采用更好的方法来实现。