C语言生成随机数保存在文件中
时间: 2024-04-30 14:21:22 浏览: 75
生成随机数可以使用C语言中的rand函数,将其保存在文件中可以使用文件操作函数。
以下是一个示例程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int i, num;
FILE *fp;
// 设置随机数种子
srand((unsigned)time(NULL));
// 打开文件
fp = fopen("random.txt", "w");
if (fp == NULL) {
printf("Error opening file.\n");
return 1;
}
// 生成10个随机数并写入文件
for (i = 0; i < 10; i++) {
num = rand();
fprintf(fp, "%d\n", num);
}
// 关闭文件
fclose(fp);
return 0;
}
```
首先使用srand函数设置随机数种子,这里用当前时间作为种子。然后打开文件random.txt并写入随机数。最后关闭文件。
注意,这里每个随机数占一行,写入时需要加上换行符。如果你想要生成指定范围内的随机数,可以使用rand() % n来得到一个0到n-1的随机数。
相关问题
生成随机数到excel,c语言实现
生成随机数并将其写入Excel文件中,可以使用C语言的第三方库libxl来实现。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include "libxl.h"
int main()
{
// 创建Excel文件对象
BookHandle book = xlCreateBook();
if (book == NULL) {
printf("Failed to create Excel file!\n");
return -1;
}
// 添加一个工作表
SheetHandle sheet = xlBookAddSheet(book, "Sheet1", NULL);
if (sheet == NULL) {
printf("Failed to add worksheet!\n");
xlBookRelease(book);
return -1;
}
// 写入随机数到单元格中
int i, j;
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
double value = (double)rand() / RAND_MAX;
xlSheetWriteNum(sheet, i, j, value, NULL);
}
}
// 保存Excel文件
if (xlBookSave(book, "random_numbers.xlsx")) {
printf("Failed to save Excel file!\n");
xlBookRelease(book);
return -1;
}
// 释放Excel文件对象
xlBookRelease(book);
printf("Excel file saved successfully!\n");
return 0;
}
```
这段代码会生成一个名为“random_numbers.xlsx”的Excel文件,并在第一个工作表中写入10行10列的随机数。你可以根据自己的需要修改代码。需要注意的是,在编译时需要链接libxl库,方法可以参考libxl的文档。
C语言生成1000个正太随机数,并用图表示它的分布
抱歉,作为AI语言模型,我无法生成图形,但是我可以提供C语言代码,您可以使用该代码生成1000个正态随机数,并使用其他工具绘制图形。
以下是C语言代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 1000
double rand_normal(double mean, double stddev)
{
double u = (double) rand() / RAND_MAX;
double v = (double) rand() / RAND_MAX;
double x = sqrt(-2.0 * log(u)) * cos(2.0 * M_PI * v);
return mean + stddev * x;
}
int main()
{
double mean = 0.0, stddev = 1.0;
double nums[N];
srand(12345); // 设置随机数种子
// 生成1000个正态分布随机数
for (int i = 0; i < N; i++) {
nums[i] = rand_normal(mean, stddev);
}
// 输出前10个随机数
for (int i = 0; i < 10; i++) {
printf("%.6f\n", nums[i]);
}
return 0;
}
```
此代码使用Box-Muller方法生成正态分布随机数。您可以将`mean`和`stddev`变量设置为所需的平均值和标准差。在此示例中,我们将它们设置为0和1。
要绘制分布图,您可以使用各种工具,例如Python的Matplotlib库或R语言。以下是Python代码示例:
```
import matplotlib.pyplot as plt
# 读取随机数文件
with open('nums.txt', 'r') as f:
nums = [float(line.strip()) for line in f]
# 绘制直方图
plt.hist(nums, bins=20, density=True)
# 绘制正态分布曲线
import numpy as np
from scipy.stats import norm
x = np.linspace(-4, 4, 100)
plt.plot(x, norm.pdf(x, loc=0, scale=1))
plt.show()
```
在此示例中,我们假设随机数已保存在名为`nums.txt`的文本文件中。我们使用Matplotlib绘制直方图,并在上面绘制正态分布曲线。您可以更改`bins`参数以更改直方图的柱数,更改`loc`和`scale`参数以更改正态分布曲线的位置和形状。
阅读全文