Linux-求随机数之和

Linux随机数发生器 Linux随机数发生器 日期:2017-11-29 01:42:10 星期三 Linux随机数发生器 一、源代码的基本情况 Linux内核版本 涉及文件 功能概述 二、外部访问接口 内核层输出接口 用户层输出接口 环境噪音输入接口 三、核心源码分析 随机数发生器理论 熵池结构 熵的加入 随机数的生成 启动脚本 四、回答主要问题 核心代码抽取 初始化漏洞攻击 五、参考... 阅读详情

一、要求:父进程产生10个子进程,子进程分别产生一个随机数,最后在父进程中将10个随机数求和输出。

二、思路:

     此处用文件作为中间桥梁。

     创建10个子进程,每个子进程产生随机数,有两种选择:

1.[初始定义两个变量sum,num]每个子进程产生随机数num后,再将sum(sum+=num)将其写入文件中,更新sum值。

   最后在父进程中读文件输出sum值即可。

2.[初始定义一个变量num]每个子进程产生随机数num后,再用"%d "(%d后面有个空格,空格在此作为标记字符)将其写入文件中,最后在父进程中在文件中读入一个字符串,然后根据其“以空格为分隔符”累加10个数,算出sum即可。

此处我们用第一种~

三、完整代码:

#include<cstdio>
#include<cstdlib>
#include<sys/types.h>
#include<unistd.h>
using namespace std;
int main(){
	int i;
	char is_child=0;
	//先写入一个0
	FILE *fp_w=fopen("text.txt","w");
	fprintf(fp_w,"%d",0);
	fclose(fp_w);
	//创建10个子进程 
	for(i=0;i<10;i++){
		pid_t pid=fork();
		if(pid==0){
			is_child=1;
			break;
		}
	}
	if(is_child){
		//子进程创建成功 
		int sum=0,num=0; 
		FILE *fp_r=fopen("text.txt","r");
		fscanf(fp_r,"%d",&sum);//读 
		fclose(fp_r);
		srand(i);//种子 
		num=rand()%100;//产生1000以内随机数 
		printf("the random number is:%d\n",num);
		sum+=num;
		FILE *fp_w=fopen("text.txt","w+");
		fprintf(fp_w,"%d",sum);//写 
		fclose(fp_w);
	} else {
		//父进程 
		sleep(1);
		FILE *fp_r=fopen("text.txt","r");
		int res=0;
		fscanf(fp_r,"%d",&res);
		printf("the res=%d\n",res);
		fclose(fp_r);
	}
} 

四、linux下的编译后的运行结果:

 

 

五、注意事项:

(1)linux下的gcc编译、运行等:

编译: gcc linux-2.cpp

运行: ./a.out

 

(2)文件目录:

 

 

(3)本题还需要优化,在并发控制上(比如在写文件时,10个子进程几乎同时进行,在写入时失败)不够优化,希望提出意见~

      ----后面会在此博客末尾更新更好的写法~

利用netns做自环Iperf测试 netns可以让一台机器上模拟多个网络设备,是网络虚拟化的重要组成,将不同类型的网络应用隔离。一个net namespace有自己独立的路由表,iptables策略,设备管理。本文利用netns模拟网络来实现单机上网卡自环上的iperf测试或其他网络测试。 阅读详情

相关推荐

vivado运行时报错 license文件更新操作

vivado使用:SYNTHESIS->Run Synthesis 时报错 [Common 17-345] A valid license was not found for feature ‘Synthesis’ and/or device ‘xc7vx485t’. Please run the Vivado License Manager for assistance in determiningwhich features and devices are licensed for your sy

qq_44692266的博客 2万+

linux脚本如何列出奇数偶数,Bash Shell -- 奇数 偶数 之和计算

脚本1:#!/bin/bashlet EVENNUM=0let ODDNUM=0for I in {1..100};doif [ $(($I%2)) -eq 0 ];thenlet EVENNUM=$EVENNUM+$Ielif [ $(($I%2)) -eq 1 ] ;thenlet ODDNUM=$ODDNUM+$Ifidoneecho "\$EVENNUM= $EVENNUM"echo "...

weixin_39997695的博客 698

DeepSeek+Coze扣子搭建智能体(保姆级教程)

DeepSeek+Coze扣子搭建智能体(保姆级教程)

yizhen91y的博客 1万+

Linux基础:用shell脚本求100以内的偶数之和

Linux基础

qq_63626307的博客 3128

MeshLab新手必看:5分钟搞定泊松表面重建(附完整点云处理流程)

本文详细介绍了如何使用MeshLab进行泊松表面重建,从点云数据导入、预处理到核心参数设置,再到后处理与模型优化,提供了完整的3D重建流程指南。特别适合计算机视觉和3D重建领域的新手快速掌握泊松重建技术,提升工作效率。

kafka6courier的博客 230

手把手教你用Multisim 14.2仿真一个4.4V的LDO电路(附完整仿真文件)

本文详细介绍了如何使用Multisim 14.2仿真一个4.4V的LDO电路,从环境配置、核心参数解析到电路搭建和仿真调试。通过分压电阻精确计算和瞬态响应测试,帮助读者掌握LDO电路的设计与验证技巧,并附有完整仿真文件供参考。

weixin_28738397的博客 275

3.求任意5个数里面的偶数之和

求任意5个数里面的偶数之和 #include <stdio.h> int main() { int a[5],sum=0; for (int i = 0; i < 5; i++) { scanf_s("%d", &a[i]); if (a[i] % 2 == 0) { sum += a[i]; } } printf("%d",sum); return 0; } 用循环赋值并遍历一个数组 如果a[i] 和2 取模,余数为0,就是偶数 然后把这些偶数加

Tom的博客 1514

KEIL MDK 生成bin文件实战:C51与ARM双平台配置指南

本文详细介绍了在KEIL MDK开发环境中,为C51和ARM双平台自动生成BIN文件的实战方法。针对C51平台,通过srec_cat.exe工具编写批处理脚本并集成到KEIL;针对ARM平台,则利用fromelf.exe工具直接配置。文章还提供了通用脚本方案和路径、变量、版本兼容性等常见问题的避坑指南,帮助开发者高效完成嵌入式程序部署。

weixin_29188997的博客 346

Linux shell脚本练习(求偶数和,求奇数和)

Linux shell脚本练习(求偶数和,求奇数和) 例如:求1到10的偶数和;1到10的奇数和。 1,创建qiuhe.sh脚本,写入运行脚本。 [root@localhost ~]# vim qiuhe.sh #!/bin/bash oushu=0 jishu=0 for ((n=0;n<=10;n+=2)) do let oushu+=$n done echo "1到...

时光慢旅的博客 9050

深入解析π型滤波电路:RC与LC滤波器的实战选型指南

本文深入解析了π型滤波电路的工作原理与实战选型。重点对比了RC型与LC型滤波器的核心差异:RC型成本低、体积小,但存在压降与能耗,适用于小电流场景;LC型效率高、滤波性能好,但成本与体积较大,适合中到大电流及高纹波抑制需求。文章提供了基于不同应用场景的选型指南与设计要点,帮助工程师做出精准决策。

weixin_29291069的博客 656

EBS开发_创建AP付款

--以下代码于20181002在Tony环境测试通过 /* BEGIN   --mo_global.init('SQLAP');   apps.fnd_global.apps_initialize(user_id =&gt; 1110, resp_id =&gt; 50597, resp_appl_id =&gt; 20003);   --mo_global.set_policy_context(...

蜗牛先生快跑的博客 4767

linux编写求前两个偶数之和,linux的shell脚本编程,求两数字间所有偶数的和,我是小白,不太懂。...

匿名用户1级2016-04-27 回答这部分主要讨论数学相关的shell脚本编程。加法运算新建一个文件“Addition.sh”,输入下面的内容并赋予其可执行的权限。复制代码代码如下:#!/bin/bashecho “Enter the First Number: ”read aecho “Enter the Second Number: ”read bx=$(expr "$a" + "$b")e...

weixin_32661683的博客 1146

2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)

2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第3题)

王老师青少年编程 990

while脚本练习

1、编写脚本,求100以内所有正奇数之和 [root@centos8 ~]#cat while_sum.sh #!/bin/bash #Version: 1.1 #********************************************************************** sum=0;i=1 while [ ${i} -le 100 ];do let sum+=i let i+=2 done echo ${sum} 2+ 3、编写脚

mqs915860370的博客 556

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Linux中的随机数

一、概念 随机数都是由随机数生成器(Random Number Generator)生成的。 1.真随机数 TRUE Random Number 真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等,这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。 根据百科上的定义可以看到,真随机数是依赖于物理随机数生成器的。使用较多的就是电子元件...

SweeNeil 5553

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【Linux】随机数的生成

dev/random是一个随机数生成器设备文件,用于生成高质量的随机数。它通过收集系统上的环境噪声(例如硬件噪声,磁盘活动等)来产生随机数。由于它只在系统上有足够的环境噪声时才能生成随机数,因此/dev/random生成的随机数是高质量的。但是,/dev/random的主要缺点是,如果系统上的环境噪声不足,则会导致生成随机数的速度变慢,有时甚至会完全停止。这可能会导致某些应用程序无法正常工作,因为它们需要大量的随机数。让分布式系统的所有元素有唯一的辨识信息。md5sum 【文件名】

liu_chen_yang的博客 3409

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

linux 内核 获取随机数

linux内核的熵池 Linux内核采用熵来描述数据的随机性。熵(entropy)是描述系统混乱无序程度的物理量,一个系统的熵越大则说明该系统的有序性越差,即不确定性越大。在信息学中,熵被用来表征一个符号或系统的不确定性,熵越大,表明系统所含有用信息量越少,不确定度越大。 计算机本身是可预测的系统,因此,用计算机算法不可能产生真正的随机数。但是机器的环境中充满了各种各样的噪声,如硬件设备发生中...

whatday的专栏 5546

Linux中获取和使用随机数

在linux系统中,有提供的API来产生随机数:srand初始化随机种子,rand产生随机数。 rand(产生随机数)表头文件: #include&lt;stdlib.h&gt; 定义函数 :int rand(void)   函数说明 : 因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的(伪随机数),rand()会返回一随机...

David_361的博客 4371

【小沐学C++】C++11 实现随机数生成(Windows、Linux)

计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了。)

爱看书的小沐 1万+

linux中生成随机数_如何在Linux中生成随机数?

linux中生成随机数Generating random numbers can seem odd. But it is very important for security. Insecurity field whatever best cipher or algorithm you use if you can’t generate random numbers it is useless ...

cunjiu9486的博客 650

Linux 获取随机数

- 伪随机法            伪随机法就是通过一个确定性的算法来获取看似随机或者乱序,在计算伪随机序列时,如果使用的开始值不变化的,实际上获取到的随机序列的值顺序是保持不变。例如在C中比较常用的随机函数rand(),是比较典型的伪随机法。           在调用rand()函数时,没有显示的调用srand()函数来设置随机序列开始种子的话,默认随机序列的种子即为1,此时的随机序列为

梦里花 7320

linux shell实现随机数多种方法

linux shell实现随机数多种方法(date,random,uuid) 在日常生活中,随机数实际上经常遇到,想丢骰子,抓阄,还有抽签。呵呵,非常简单就可以实现。那么在做程序设计,真的要通过自己程序设计出随机数那还真的不简单了。现在很多都是操作系统内核会提供相应的api,这些原始参数是获取一些计算机运行原始信息,如内存,电压,物理信号等等,它的值在一个时间段可以保证是唯一的了。好

ffeng271的专栏 1534

关于linux下的随机数

在 linux下取随机数,当然可以简单的用rand函数,不过要注意的是一定要设置好种子,否则伪随机数就会变成非常伪的随机数。设置种子,一般就用 time函数返回当前时间即可。一般来讲,这样的做法基本上就可以了,因为虽然我们用的是随机数,但是由于种子不同,从上亿的数中去猜测我们的种子几乎是 不可能的。但是如果我们的种子算法被知道了,那么显然就不行了。当然作为某些应用也无所谓,比如我们要在屏幕

Gothic的专栏 921

linux产生随机数

//--------------------------------------------------------------- rand函数 函数rand()是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。函数rand()会返回一个处于0和你所指定的数值(缺 省为1)之间的分数。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动

monzart的专栏 806

linux应用:随机数、proc

proc是一个虚拟文件系统,它提供了一种内核与用户空间交互的方式,通过文件和目录的形式展示内核对象的信息,包括进程信息、系统状态、硬件设备信息等。它并不占用实际的磁盘空间,而是在内存中动态生成。当访问/proc下的文件时,内核会实时生成相应的信息并返回给用户空间程序。​与时间相关的 proc 文件​。

qq_43441284的博客 1199

linux 接口 取得一段随机数,Linux中获取和使用随机数

在linux系统中,有提供的API来产生随机数:srand初始化随机种子,rand产生随机数。rand(产生随机数)表头文件: #include定义函数 :int rand(void)函数说明 :因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的(伪随机数),rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函...

weixin_39633976的博客 436
上一篇: Pydev + eclipse 配置
下一篇: Fibonacci数列 - 基础练习
ଳxin
博客等级 码龄8年 83粉丝 197原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值