最早的C语言实现运行于PDP-11计算机上,它提供了一个称为rand的函数,该函数的作用是产生一个(伪)随机非负整数。PDP-11计算机上的整数长度为16位(包括了符号位),因此rand函数将返回一个介于0和2^15-1之间的整数。
ANSI C标准中定义一个常数RAND_MAX,它的值等于随机数的最大取值。
利用sizeof操作符可以测定常数所占的字节的大小,然后就可以输出它的值。
/*
** 随机数。
*/
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main( void ){
int size = sizeof RAND_MAX;
printf( "size = %d\n", size );
if( sizeof(int) == sizeof(long) ){
if( RAND_MAX <= INT_MAX ){
printf( "1.1:RAND_MAX = %d\n", RAND_MAX );
} else if( RAND_MAX <= UINT_MAX ){
printf( "1.2:RAND_MAX = %u\n", RAND_MAX );
} else if( RAND_MAX <= LLONG_MAX ){
printf( "1.3:RAND_MAX = %lld\n", RAND_MAX );
} else if( RAND_MAX <= ULLONG_MAX ){
printf( "1.4:RAND_MAX = %llu\n", RAND_MAX );
}
} else{
if( RAND_MAX <= INT_MAX ){
printf( "2.1:RAND_MAX = %d\n", RAND_MAX );
} else if( RAND_MAX <= UINT_MAX ){
printf( "2.2:RAND_MAX = %u\n", RAND_MAX );
} else if( RAND_MAX <= LONG_MAX ){
printf( "2.3:RAND_MAX = %ld\n", RAND_MAX );
} else if( RAND_MAX <= ULONG_MAX ){
printf( "2.4:RAND_MAX = %lu\n", RAND_MAX );
}
}
printf( "rand() = %d, rand() = %d\n", rand(), rand() );
return EXIT_SUCCESS;
}
输出: