4
为什么rand()在Linux上重复的次数比Mac重复得多?
当我发现rand()Linux上的重复次数似乎比Mac上重复的次数要多时,我正在C中实现一个哈希图,这是我正在研究的项目的一部分,并使用随机插入进行测试。RAND_MAX在两个平台上均为2147483647 / 0x7FFFFFFF。我将其简化为该测试程序,该程序使字节数组RAND_MAX+1-long,生成RAND_MAX随机数,记录每个数字是否重复,并从列表中将其检查出。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int main() { size_t size = ((size_t)RAND_MAX) + 1; char *randoms = calloc(size, sizeof(char)); int dups = 0; srand(time(0)); for (int i = 0; i < RAND_MAX; i++) { int r = rand(); if (randoms[r]) { // printf("duplicate at …