admin 管理员组

文章数量: 887031


2024年2月18日发(作者:色卡颜色对照表)

c语言获取随机数的例子

获取随机数在C语言中是一个常见的需求。C语言提供了几种方法来生成随机数,本文将介绍其中的十个方法。

1. 使用rand函数生成随机数

rand函数是C语言中最常用的生成随机数的方法。它返回一个介于0和RAND_MAX之间的随机整数。为了获取一个指定范围内的随机数,可以使用取余运算符将rand函数的返回值映射到所需的范围上。

```c

#include

#include

#include

int main() {

// 设置种子

srand(time(NULL));

// 生成0到99之间的随机数

int randomNum = rand() % 100;

printf("随机数: %dn", randomNum);

return 0;

}

```

2. 使用random函数生成随机数

random函数是另一种生成随机数的方法,它与rand函数类似,但是返回的是一个长整型的随机数。需要注意的是,使用random函数前需要先调用srandom函数设置随机数生成器的种子。

```c

#include

#include

#include

int main() {

// 设置种子

srandom(time(NULL));

// 生成0到99之间的随机数

int randomNum = random() % 100;

printf("随机数: %dn", randomNum);

return 0;

}

```

3. 使用arc4random函数生成随机数

arc4random函数是一个强大的随机数生成器,它能够生成高质量的随机数。它不需要设置种子,可以直接调用。

```c

#include

#include

int main() {

// 生成0到99之间的随机数

int randomNum = arc4random_uniform(100);

printf("随机数: %dn", randomNum);

return 0;

}

```

4. 使用random_r函数生成随机数

random_r函数是一个线程安全的随机数生成器,它可以生成指定范围内的随机数。使用random_r函数需要先创建一个随机数生成器对象,并将其作为参数传递给random_r函数。

```c

#include

#include

#include

int main() {

// 创建随机数生成器对象

struct random_data randData;

char randState[256];

// 设置种子

initstate(time(NULL), randState, sizeof(randState));

setstate(randState);

// 生成0到99之间的随机数

int randomNum;

random_r(&randData, &randomNum);

randomNum = randomNum % 100;

printf("随机数: %dn", randomNum);

return 0;

}

```

5. 使用drand48函数生成随机数

drand48函数是一个生成双精度随机数的方法,它返回一个介于0和1之间的随机浮点数。

```c

#include

#include

#include

int main() {

// 设置种子

srand48(time(NULL));

// 生成0到1之间的随机浮点数

double randomNum = drand48();

printf("随机数: %fn", randomNum);

return 0;

}

```

6. 使用gettimeofday函数生成随机数

gettimeofday函数可以获取当前的时间,可以利用它生成随机数。一种常见的方法是使用当前时间的微秒数作为随机数的种子。

```c

#include

#include

#include

int main() {

struct timeval tv;

gettimeofday(&tv, NULL);

// 设置种子

srand(_usec);

// 生成0到99之间的随机数

int randomNum = rand() % 100;

printf("随机数: %dn", randomNum);

return 0;

}

```

7. 使用/dev/random或/dev/urandom生成随机数

在Linux系统中,可以通过访问特殊文件/dev/random或/dev/urandom来获取随机数。这些文件会生成一个随机数流,可以通过读取文件的内容来获取随机数。

```c

#include

#include

#include

#include

int main() {

// 打开/dev/random文件

int randomFile = open("/dev/random", O_RDONLY);

// 读取一个随机数

unsigned int randomNum;

read(randomFile, &randomNum, sizeof(randomNum));

// 关闭文件

close(randomFile);

printf("随机数: %un", randomNum);

return 0;

}

```

8. 使用/dev/urandom生成随机数

/dev/urandom文件和/dev/random文件类似,但是它不会阻塞等待熵池积累足够的随机性。因此,它可以更快地生成随机数。

```c

#include

#include

#include

#include

int main() {

// 打开/dev/urandom文件

int randomFile = open("/dev/urandom", O_RDONLY);

// 读取一个随机数

unsigned int randomNum;

read(randomFile, &randomNum, sizeof(randomNum));

// 关闭文件

close(randomFile);

printf("随机数: %un", randomNum);

return 0;

}

```

9. 使用Windows API生成随机数

在Windows系统中,可以使用Windows API来生成随机数。其中一个方法是使用CryptGenRandom函数。

```c

#include

#include

int main() {

// 生成一个随机数

unsigned int randomNum;

if

(BYTE*)&randomNum)) {

printf("生成随机数失败n");

return 1;

}

printf("随机数: %un", randomNum);

return 0;

}

```

(!CryptGenRandom(sizeof(randomNum),

10. 使用C++的随机数库

C++的随机数库提供了更多的随机数生成方法,比C语言更加方便易用。可以使用头文件中的随机数生成器和随机数分布来生成随机数。

```c

#include

#include

int main() {

// 创建随机数生成器对象

std::random_device rd;

std::mt19937 gen(rd());

// 创建随机数分布对象

std::uniform_int_distribution<> dis(0, 99);

// 生成0到99之间的随机数

int randomNum = dis(gen);

printf("随机数: %dn", randomNum);

return 0;

}

```

这些都是在C语言中获取随机数的方法,根据实际需求选择合适的方法来生成随机数。无论是简单的rand函数还是更复杂的随机数库,都可以满足不同的随机数生成需求。希望本文对你有所帮助!


本文标签: 生成 函数 使用 方法 获取