C语言产生随机数并写入文件中

article/2025/9/27 12:51:16

       在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 和srand()函数来生成随机数,如果要保证每次产生的随机数不重复,需要在每次产生随机序列前,先指定不同的种子,这样计算出来的随机序列就不会完全相同了。可以在调用rand()函数之前调用srand( (unsigned)time( NULL ) ),这样以time函数值(即当前时间)作为种子数,因为两次调用rand函数的时间通常是不同的,这样就可以保证随机性了。

       利用srand((unsigned int)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的,下面我们就动手用srand()函数来产生随机数吧。

(1)先试试如何产生随机数(比如产生10个100以内的随机数)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include<math.h>int main(void)
{srand(time(NULL));//先种种子 int i,j,s=0;FILE *fp = NULL;for(i = 0 ; i < 10 ; i ++) //产生10个100以内的随机数 {j = rand()%100 ;printf("j:%d\n",j);}return 0;} 

(2)将产生的随机数写入文件中(以.text文件为例)

fp = fopen("D:\\Users\\data.txt","a");//在指定目录下创建.txt文件
fprintf(fp,"%5d",j); //把随机数写进文件
fclose(fp); //关闭文件

可以看见在自定义文件夹中已经产生了一个data文件,打开后里面已经产生10个100以内的随机数。(可能有人看到图片会发出疑问为什么data文件里的随机数和命令窗口里显示的不同,因为添加写入文件的代码后重新生成了随机数。)

(3)在编写博客过程中,脑袋像戏精一样突发奇想:假如不看文件夹我怎么通过命令窗口知道data文件是否生成了呢,万一它骗我呢??

if((fp=fopen("D:\\Users\\data.txt","w"))==NULL)
{
printf("can not creat the file\n");
exit(0);
}
printf("creat the file successful\n");

(4)想要点击发布博客时突然又想自己能不能通过命令窗口控制随机数的范围和个数??(通过查阅相关资料修改代码,i 表示随机数的范围2^i ,考虑到电脑是64位的,理论上 i 不超过64,M 表示随机数的个数)

 int i,M,b,s=0,j,max;FILE *fp;//声明文件指针char str[]="";scanf("%d%d",&i,&M); //输入i,Mfp = fopen("D:\\Users\\data.txt","a");//在指定目录下创建.txt文件fprintf(fp,"i= %d\nM= %d\n",i,M); //第一行显示i=的大小,第二行显示M=的大小 srand(time(NULL)); //初始化时间种子max=(int)pow(2,i); //随机数的最大值for(j=0;j<M;j++){b=rand()%(max/M)+1; //区间  fprintf(fp,"%-5d ",b); //把随机数写进文件if(j%10==9)fprintf(fp,"\n");  //换行}fclose(fp); //关闭文件return 0;

     

(5)通过上面的代码成功实现了自己控制随机数的范围和个数,但是打开data文件发现新的随机数不断写入data文件,随机数一多会造成比较乱,自己想能不能通过修改代码产生不同的文件然后让随机数分别写入不同文件中,并且产生的文件比较容易区分??

scanf("%d%d",&i,&M); //输入i,Msprintf(str,"test_%d_%d.txt",i,M); //把i,M写进文件名fp=fopen(str,"w"); //以写方式新建一个文件

这样通过文件夹的名称我们可以一眼就看的出来哪个文件夹放着的随机数范围和个数分别是多小,这样就特别方便我们找到自己想要的随机数。

(6)这样看起来感觉还行,但是脑袋一热又想:如果产生的随机数比较多,我怎么快速分辨它们的大小呢??(嗯。。。那就给随机数按大小排一下序吧)

 b=rand()%(max/M)+1; //区间 s=s+b;   //确保随机数是从小到大printf("s:%d\n");	 fprintf(fp,"%-5d ",s); //把随机数写进文件

总结:对于编程,一定要学会自己动手,只看理论知识是很难学会编程的,就拿C语言产生随机数并且写入文件上来说,刚开始只产生随机数的代码只有简单的几行,在编程过程中可以发现和脑补很多东西,通过不断发现和拓展新功能,增加和补充代码,代码变成了三十多行,如果突然拿三四十行的代码给你看,可能你需要花费一定时间才能看懂,但是如果你根据功能把它分开成一小部分,你理解起来会容易得多。编程也是一样的,通过自己一段一段的去写,最后汇总起来就变成一个程序。

 


http://chatgpt.dhexx.cn/article/hTuBFv1T.shtml

相关文章

c语言对于随机数的产生于应用,c语言之产生随机数详解

在编程中,我们经常需要用到各种随机数,下面我来简单谈谈随机数产生机理。 原理:产生随机机数的原理是计算机根据一个值(一般称作随机种子),然后把这个值作为参数,在经过一系列的公式运算计算出一个值,这个值就是随机数。简单来说,就像 一个关于我们的数学函数,给定它一…

c语言产生随机数不变怎么办,用C语言产生随机数。怎么办?

满意答案 axhbl 2013.01.15 采纳率&#xff1a;42% 等级&#xff1a;2 已帮助&#xff1a;29986人 "#include #include #include #define SIZE 100 void main() { int numbers[SIZE]; int i, j; srand(time(NULL)); for (i 0; i < SIZE; i) { numbers[i] rand(…

MPP 技术简述,Hadoop 与 MPPDB 的区别

精选30云产品&#xff0c;助力企业轻松上云&#xff01;>>> 整理 OLAP 引擎的时候&#xff0c;遇到了 MPP &#xff0c;所以再次总结一下。 1、 什么是MPP&#xff1f; MPP (Massively Parallel Processing)&#xff0c;即大规模并行处理&#xff0c;在数据库非共享…

MPP DB 是 大数据实时分析系统 未来的选择吗?

大数据领域&#xff0c;实时分析系统&#xff08;在线查询&#xff09;是最常见的一种场景&#xff0c;前面写了一个《实时分析系统(HIVE/HBASE/IMPALA)浅析》讨论业界当前常见的方案。互联网公司用得比较多是HIVE/HBASE&#xff0c;如腾讯基于HIVE深度定制改造&#xff0c;改名…

MPPDB分布式结构化数据库

1.MPPDB简介 MPP&#xff0c;它是一款 Shared Nothing 架构的分布式并行数据库集群&#xff0c;具备高性能、高可用、高扩展特性&#xff0c;可以为超大规模数据管理提供高性价比的通用计算平台&#xff0c;并广泛地用于支撑各类数据仓库系统、BI 系统和决策支持系统。 2.MPPDB…

mppdbLibra

1&#xff1a;三种数据库架构、特征、应用 数据库架构中shared-nothing等三个之间的优缺点&#xff09; 1.shared-everything 一般是针对单个主机&#xff0c;完全透明共享CPU/MEMORY/IO&#xff0c;并行处理能力是最差的&#xff0c;典型的代表是SMP技术 2.Shared-Disk&#…

MPPDB集群高可用设计

目录 1. 前言 2. 内核端高可用设计 2.1 GTM高可用 2.2 CN高可用 2.3 DN高可用 2.3.1 主、备、从高可用设计 2.3.2 数据复制 3. 集群管理端高可用设计 3.1 CMserver高可用 3.2 CMagent高可用 1. 前言 MPPDB集群服务组件主要分为内核端和集群管理端&#xff0c;内核端主要包括…

java JButton计算器布局

java JFrame大体框架 this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //窗体退出关闭程序 this.frame.setVisible(true); //该框架显示 this.frame new JFrame(“簡易計算器”); // 该面板的名字 this.frame.setLocation(100,100); //最初该面板定位 this.frame.…

java jbutton 省略号_JButton显示省略号

我正在尝试使用Swing库在Java中设置GUI。我创建了一个自定义按钮类&#xff0c;它具有自定义初始化程序&#xff0c;使事情变得更容易。它在下面&#xff1a; public class JTButton extends JButton { char type; public JTButton(String title, ActionListener listener, cha…

java jbutton_Java JButton按钮使用

/** *JButton按钮按键 * */ package com.swing; import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; class jbutton extends JFrame{ private JButton btn1,btn2,btn3,btn4,btn5; public static void main(String[] args){ jbutton jbnew …

JButton

JButton()&#xff1a;设置一个没有文本图案的按钮 JButton(String text):创建一个带文本的按钮 getContentPane().add(组件) package apiapi;import javax.swing.*;public class api {public static void main(String[] args) {JFrame framenew JFrame();frame.setTitle(&q…

java按钮组件(JButton、JCheckBox)

按钮在Swing中是比较常见的组件&#xff0c;用于触发特定动作&#xff0c;Swing中提供多种按钮组件&#xff0c;如按钮、单选按钮、复选框等&#xff0c;这些按钮都是从AbstractButton类中继承而来的&#xff0c;下面将讲解这些按钮的应用。 1.JButton按钮组件 Swing中的按钮…

JButton部分常用的方法

本篇文章将会教会大家JButton常用的使用方法 JButton是Swing的组件所以需要导入包 import javax.swing.*;1创建JButton //创建JButton JButton jButton new JButton(); //将JButton添加到面板里 jPanel.add(jButton);2设置JButton大小以及坐标 //设置JButton大小 jButton.…

07.JavaSwing(常用基础组件——JButton类)

一、概述 JButton组件是最简单的按钮组件&#xff0c;在按下和释放2个状态之间进行切换&#xff0c;可以通过捕捉按下并释放的动作执行一些操作&#xff0c;从而完成和用户之间的交互。 二、构造函数 JButton();//创建不带有设置文本或图标的按钮。 JButton(Icon icon);//创建…

【CSS】使HTML页面表格中文字水平且垂直居中的方法(易错)

问题出现 因为是td直接写的文字&#xff0c;并不是套了标签才写&#xff0c;水平居中很清楚就是text-aline: center; 但是垂直居中始终没有得到很好地解决&#xff0c;查找了网上的样式是vertical-align: middle&#xff1b; 试了一下没有效果&#xff0c;很苦恼。 解决办法 …

css水平垂直居中方式总结

这里写目录标题 1. text-align: center;文字水平居中&#xff1b;margin: 0 auto;自身水平居中2. 绝对定位margin&#xff08;元素需要固定宽高&#xff09;3. 绝对定位 transform: translate(-50%,-50%);4. 绝对定位margin: auto;5.父元素设置display: flex;justify-content: …

CSS水平垂直居中的几种实现方式

水平垂直居中 1.利用 position:absolute2. 利用margin:auto3. 利用弹性盒子4. 利用水平对齐和行高5. 最简便的方法 1.利用 position:absolute <div class"father"><div class"son"></div> </div>当已知元素宽度和高度时&#xff…

div+css实现水平/垂直/水平垂直居中超详解

目录 一、水平居中1.块级元素水平居中方法一:设置margin:0 auto方法二:设置flex布局方法三:设置css3的transform 2.行内元素水平居中行内元素在块级元素中水平居中方法一&#xff1a;将外层块级元素设置为text-align&#xff1a;center方法二&#xff1a;将行内元素设置为块级元…

16种CSS水平垂直居中方法

16种css水平垂直居中方法以及应用&#xff08;文字、图片&#xff09; 一、垂直居中 1、行内元素 基本思想&#xff1a;单行文本子元素line-height 值为父元素 height 值 .parent {height: 200px; }.son {line-height: 200px; }2、块级元素 2.1行内块级元素 基本思想&…

【CSS】CSS实现水平垂直居中

元素水平垂直居中的场景很常见&#xff0c;常用的方法如下&#xff1a; &#xff08;以下方法在chorme测试可行&#xff09; 一、文本垂直居中 <div class"test">这是一段文字</div>.test {width: 200px;height: 200px;background: orange;text-align:…