用c语言从均匀分布中抽取1000个随机数
时间: 2023-06-20 11:05:02 浏览: 129
可以使用C标准库中的rand函数和srand函数来实现从均匀分布中抽取随机数的功能。具体步骤如下:
1. 首先需要包含stdlib.h头文件,该头文件中包含了rand和srand函数的声明。
2. 使用srand函数设置随机数生成器的种子,可以使用time函数获取当前系统时间作为种子,确保每次生成的随机数序列不同。
3. 使用rand函数生成随机数,该函数返回一个0到RAND_MAX(定义在stdlib.h中)之间的整数,需要将其缩放到期望的范围内。可以使用以下公式将其缩放到[0,1)之间:
double rand_val = (double)rand() / ((double)RAND_MAX + 1);
4. 将上一步得到的随机数缩放到目标分布的范围内,例如要从[0, 10]的均匀分布中抽取随机数,可以使用以下公式:
double uniform_val = rand_val * 10;
5. 重复上述步骤1000次,将生成的随机数存储到数组中即可。
下面是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 1000 // 生成随机数的数量
int main()
{
double rand_val, uniform_val;
double rand_nums[N]; // 存储随机数的数组
int i;
srand((unsigned)time(NULL)); // 使用系统时间作为种子
for (i = 0; i < N; i++) {
rand_val = (double)rand() / ((double)RAND_MAX + 1);
uniform_val = rand_val * 10; // 从[0, 10]的均匀分布中抽取随机数
rand_nums[i] = uniform_val;
}
// 输出前10个随机数
for (i = 0; i < 10; i++) {
printf("%f ", rand_nums[i]);
}
printf("\n");
return 0;
}
```
阅读全文