数组+随机数+循环的中断

利用计算机内部计数器生成真随机数原理及实现 一、手动产生随机数方法  计数器是精密器件不能直接产生随机数,但可以让其为产生随机数服务。每个计算机都有其工作频率称为主频,与之相对应的是时钟周期,下面的程序段DWORD n;_asm//嵌入汇编语言{rdtsc//读计数器值mov n,eax//计数器低位值进入n}  的作用是读取自开机以来CPU经历的时钟周期数的低32位数值(高位值变化缓慢在此无用)放到变量 n中,每调用一次 n的数值等于其现 阅读详情

一、循环:break / continue / goto

  1. break:跳出整个循环,循环直接结束
  2. continue:仅跳过本次循环剩下代码,直接进入下一轮循环

goto语法

作用:函数内部跳转;多用于错误处理、跳出多层循环

不推荐滥用goto,会打乱代码阅读逻辑

#include <stdio.h>
int main()
{
printf(“A\n”);
goto next; // 直接跳到next标签,中间printf不会执行
printf(“B\n”);
next:
printf(“C\n”);
return 0;
}

格式:

goto next ;

next:

二、随机数 rand & srand & time

头文件

  • rand() 、 srand() → #include <stdlib.h>
  • time() → #include <time.h>
  1. rand() :生成随机整数,种子不变,每次运行出来的随机数序列一模一样,可以预测

printf(“%d\n”, rand());

  1. 种子:rand生成随机数的基准数值。种子固定,随机序列固定。
  2. srand(种子) :设置随机数种子。
  3. time(NULL) :返回系统当前时间差值(时间一直在变化),拿来做种子,实现真随机。

标准写法:

srand((unsigned int)time(NULL));

  • time(NULL) :拿到时间数值
  • (unsigned int) :强制类型转换,匹配srand参数类型

随机数范围公式

通用公式: a + rand() % (b‑a + 1) 生成 [a , b] 的整数

  • 0~99: rand() % 100;
  • 1~100: rand() % 100 + 1;
  • 100~200: 100 + rand() % (200‑100 + 1);

注意: srand() 整个程序只调用一次,不要写在循环内部。放在头文件下面

三、数组

数组:一组相同数据类型元素的集合。分为一维数组、多维(二维)数组。

定义格式

类型 数组名[元素个数];
//示例:存放20个人数学成绩
int math[20];

类型可以: char short int float

数组初始化

  1. 完全初始化

int arr[2] = {1,2};

  1. 不完全初始化
    int arr[6] = {1};

只给第一个元素赋值,剩下全部自动补0

3.明确一下arr[x]
x它表示一共有x个元素,但编号从0开始
所以下标是从0到x-1
表示数组时,单个数组的编号最多用arr[x-1],没有arr[x],这个是越界的。

字符数组 vs 字符串

  • 字符串:末尾自带隐藏结束符 \0

char arr[] = “abc”; // 自动末尾补’\0’

  • 普通字符数组:没有 \0 ,不能直接当字符串打印

char arr[3] = {‘1’,‘2’,‘3’};

重点:用 %s 打印,必须保证内存后面存在 \0 ,否则乱码。

3.szeaof 和strlen的区别
sizeof

  • 运算符(操作符),算整个数组占内存总字节数
  • int arr[5] : sizeof(arr) = 5*4=20字节
  • 数组传参变成指针之后,sizeof就得不到数组真实大小(这个求的是内存的大小,不管内存里面放了什么东西)

在循环中:经常见到
sz=szeaof(arr[5])/szeaof(arr[0]);

strlen

  • 库函数, <string.h> ,只针对字符串
  • 统计 ‘\0’ 之前有效字符个数,不包含结束符 \0
  • 普通char数组没有 \0 绝对不能用strlen,结果乱码随机值
    这个要头函数 #include<string.h>;

数组的[]

  1. 定义:int arr[10];
    [10] = 数组元素总容量,一共10个元素,下标0‑9
  2. 访问:arr[3] = 10;
    [3] = 下标索引,取第4个元素

陷阱:定义写10,最大合法下标是9,arr[10]越界
下标是从0开始的
数组初始化小要点

int arr[5]={1,2};

不完全初始化,剩下元素自动赋值0;
char字符串数组 char str[]=“abc” ,编译器自动补 \0 ;
如果是 char str[]={‘a’,‘b’,‘c’} ,不会自带 \0 。

易错点汇总

  1. break 结束整个循环; continue 只跳过这一轮。
  2. goto只能在同一个函数内部跳转,不能跨函数。
  3. rand不写srand,每次运行随机数完全一样。
  4. srand((unsigned int)time(NULL)); 只写一次,放main开头。
  5. 数组不完全初始化,未赋值元素默认是0。
  6. 字符串自带 \0 ;普通字符数组不会自动加 \0 。
ROS下UR+Realsense相机进行手眼标定 手眼标定主要是用来确定相机坐标系和机械臂坐标系之间的转换关系,从而实现后续的抓取等任务。 阅读详情

相关推荐

从PSDK到ROS节点:实战GPS数据发布与CMake配置

本文详细介绍了如何从大疆PSDK获取GPS数据并封装为ROS节点的实战过程,包括PSDK编译、GPS数据订阅、ROS节点实现及CMake配置优化。通过具体代码示例和调试技巧,帮助开发者快速实现无人机传感器数据与ROS系统的集成,提升开发效率。

weixin_30843605的博客 458

流程控制语句与数组

数组是一种数据结构,用于存储相同类型的多个元素。它通过索引访问元素,索引从0开始。数组在内存中是连续分配的,这使得访问速度非常快。数组的定义需要指定数据类型和数组大小。静态初始化是在定义数组时直接赋值。// 定义并静态初始化一个整型数组// 定义并静态初始化一个字符串数组。

2603_95547931的博客 371

hdu 1195 Open the Lock(bbfs(双向广搜))

<br />第一次使用双向广搜算法求解,感觉效率的确提高了不止两倍。刚开始的一直WA,后来发现是每次都要扩展一层的节点,然后在扩展另一层的节点,而不是每次只扩展一个节点。<br /> /* Author: ACb0y Date: 2010-9-21 Type: bbfs(双向广搜) ProblemId: hdu 1195 Open the Lock Result: AC */ #include <iostream> #include <queue> using namespace

个人独立博客http://www.acb0y.cn/ 1527

ZYC-java-day06

while循环 package com.neu.day06; /** * @ Author :Eric Lee * @ Date :Created in 18:32 2022/1/24 * @ Description: * @ Modified By: * @ Version : 1.0 */ public class Demo7 { public static void main(String[] args) { /** *

__Miracle__ 205

STM32F030F4P6实战:LL库+DMA驱动WS2812全流程(附避坑指南)

本文详细介绍了如何使用STM32F030F4P6的LL库和DMA驱动WS2812 LED灯带的全流程,包括硬件选型、CubeMX配置、LL库与DMA关键实现、数据格式转换及调试技巧。特别提供了避坑指南,帮助开发者避免常见错误,提升开发效率。

weixin_29194693的博客 484

手把手教你配置SAP PP供应区域(Supply Area):实现线边仓精准发料与物料流优化

本文详细解析了SAP PP供应区域(Supply Area)的配置方法,帮助企业实现线边仓精准发料与物料流优化。通过三级优先级逻辑和四步配置法,系统可自动识别最优组件来源位置,显著提升生产订单处理效率和库存准确率。文章还提供了典型问题解决方案和性能优化技巧,适用于离散制造和重复制造场景。

weixin_29275257的博客 434

Arduino基础一文通

此文旨在记录arduino的一些基本语法,以备自己后续查用,并没有任何的讲解和分析,如果您是电子爱好者,想学习arduino,请寻找合适的教材学习;如果您有编程基础,想短时间内粗略了解arduino,则完全可以。 Arduino学习好去处: Arduino教程_w3cschool ...

finedayforu的博客 844

FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇四

FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇四

坚韧与专注 2164

基于博途1200PLC+HMI 8小车呼叫控制系统仿真 程序: 1、任务:8工位小车随机呼叫的...

"啪嗒——"按下博途V16的仿真启动键,监控画面上的8盏工位指示灯开始欢快地跳动。这个看似简单的8工位小车调度系统,藏着不少工控人爱琢磨的"小心机"。仿真画面上的小车又开始欢快地跑起来了,这8个工位就像跳动的音符,而我们的PLC程序就是那根指挥棒。仿真时遇到个哭笑不得的问题——HMI按钮地址绑错到输出区,导致PLC写不进去呼叫信号。用取反逻辑实现乒乓切换,配合HMI的指示灯直接绑定变量,省去了中间状态暂存的麻烦。这个数组就像控制系统的眼睛,每个元素对应一个工位的呼叫状态。

DJYZTNVN的博客 752

OpenClaw 性能调优五步法

本文介绍了优化OpenClaw性能的五步方法,将响应时间从3秒降至300毫秒。首先建立性能基线,分析模型加载、上下文检索等主要瓶颈。五步优化包括:1)启用模型缓存减少60%延迟;2)优化记忆检索策略降低25%延迟;3)并行化工具调用节省40%时间;4)智能选择轻量级模型减少50%推理时间;5)启用流式输出改善70%感知延迟。最终整体性能提升10倍,并建议建立持续监控机制。这些优化方法经过实战验证,适用于不同规模的OpenClaw部署场景。

刘一说的IT专栏 1445

【法如faro】三维激光软件Scene2023数据处理(自动配准并转换坐标)流程

法如faro Scene2023数据处理(自动配准并转换坐标)的主要流程为:新建项目、导入数据、处理、自动注册、坐标系转换、模型导出立和面模型导出等。

智慧空间实验室 2385

c51随机数不重复_怎么让51单片机产生随机数?

刚写的程序,我的思想是用定时器加rand()随机函数来实现的,单片机上电之后通过按键去启动取随机数,若是单片机上电就立即取随机数的话,那每次上电随机的结果都是一样的。然后是0到9不重复的随机数,程序中用了循环来判断是否和前面取的随机数相同,相同则进入下次取随机数,不同则存入数组。程序如下:#include#include //包含rand()随机函数的头文件unsigned char t,k,i,...

weixin_39680154的博客 4985

6.4 实战项目:基于Agent内核构建Code Review智能体

本文介绍了一个基于Agent内核构建的智能Code Review系统实战项目。系统采用多Agent协作架构,包含代码质量分析、安全漏洞识别、性能优化建议等核心功能模块。文章详细展示了系统架构设计,采用协调器Agent管理多个专业Agent协同工作,并提供了基础Agent框架和协调器Agent的TypeScript实现代码。项目结合了AI Agent核心原理和多Agent协作机制,实现了自动化的代码审查流程,能够生成详细的审查报告,帮助开发者提升代码质量和安全性。

yonggeit的博客 3114

Thinking in Java,Foreach语法,标签

for循环常用于执行“计数”任务 public class TJpritice { public static void main(String[] args) { for(char c=0;c<128;c++){ if(Character.isLowerCase(c)){ System.out.println(...

question_mark的博客 183

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

浅谈随机数生成器及其应用

导读   相信来看的读者一定知道在stdlib.h中的rand(),开始觉得它是一个很神奇的东西,绞尽脑汁都想不出它是如何做到的,于是查了下资料知道了如下几点 Windows随机函数产生的随机数不是真正意义下的随机数,而是通过一个随机数种子,然后一些公式,不断地得到下一个"随机数",然后将种子改成这个随机数,然后再不断这样继续。 通过单纯的编程很难得到一个真正的随机函数,UNI...

adx33526的博客 1476

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

rand()详解以及srand((unsigned)time(NULL))放在循环体内的结果分析

写题目的时候突然发现 。

qq_43606914的博客 2185

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ARM中断处理流程

这边文章主要是讲解一下,对ARM_Linux中断处理的一个流程介绍,在底层处理部分,不同的架构会有不一样处理,但Linux中断注册过程是一样的。   一、Linux中断的简易模型: 当一个IRQ产生时,会发生什么? 当一个IRQ产生后,CPU会首先自动跳转到IRQ的中断向量(这个中断向量是可设置的),在这个IRQ中断向量里又是一个跳转指令,CPU再次跳转,跳转后的代码主要完成的工作是保存一

bindingfly的博客 5110

W55MH32 的真随机数发生器 (TRNG)

W55MH32是WIZnet专为网络中心嵌入式应用设计的微控制器,其集成的硬件真随机数发生器(TRNG,非软件算法)通过“熵源(内部模拟噪声)→数字化器(转换模拟噪声为原始二进制流)→调节器(消除偏差、确保比特流均匀)”的流程生成加密安全的高质量随机数;该TRNG是芯片实现TLS/SSL协议的关键,可为会话密钥生成、一次性随机数(Nonces,防重放攻击)提供不可预测值,还适用于IoT安全(设备ID与加密密钥生成)、网络设备安全启动、加密库伪随机数发生器(PRNG)种子供给、安全通信(VPN、加密邮件等)

WIZnet2012专栏 766

程序随机生成一个20个整数数据的数组,然后输入要查找的数据,如果数据存在返回 数据所在的位置,如果不存在打印不存在

java基础题 数组 1.程序随机生成一个20个整数数据的数组,然后输入要查找的数据,如果数据存在返回 数据所在的位置,如果不存在打印不存在; import java.util.Arrays; import java.util.Random; import java.util.Scanner; /** * 程序随机生成一个20个整数数据的数组,然后输入要查找的数据 */ //要点:输出结果注意循环会循环,通过定义标记值index class Demo1 { public static void

weixin_45273750的博客 2295

c语言for循环加法,BigDecimal 在for循环中相加注意事项

public static void main(String[] args) { BigDecimal bigDecimal = new BigDecimal(1); for (int i = 0; i < 50; i++){ bigDecimal.add(new BigDecimal(i)); } System.out.println(bigDecimal); } 上面这段代码,biDec...

weixin_29469195的博客 1480

如何利用计算机伪概率,伪随机数

伪随机数是用确定性的算法计算出来自[0,1]均匀分布的随机数序列。并不真正的随机,但具有类似于随机数的统计特征,如均匀性、独立性等。在计算伪随机数时,若使用的初值(种子)不变,那么伪随机数的数序也不变。伪随机数可以用计算机大量生成,在模拟研究中为了提高模拟效率,一般采用伪随机数代替真正的随机数。模拟中使用的一般是循环周期极长并能通过随机数检验的伪随机数,以保证计算结果的随机性。[1]中文名伪随机数...

weixin_35945480的博客 1904

循环控制与随机数生成:break、continue与种子机制全解析

编程中循环控制和随机数生成是基础且易混淆的环节。循环控制语句break和continue分别代表“终止全部”与“跳过当前”,理解其执行路径和嵌套作用域能有效避免死循环和逻辑错误。随机数看似简单,但大多数语言中的rand()基于种子生成伪随机序列,未正确设置种子会导致每次运行结果相同。通过合理使用srand(time(NULL))设置种子、掌握范围转换时的概率均匀性陷阱,以及区分普通伪随机与密码学安全随机数,可以在数据模拟、行为检测等工程实践中获得可靠且可复现的结果。从循环控制原理与随机数种子机制切入,结合多

weixin_29913663的博客 127

rand 随机数 matlab,matlab中如何用rand产生相同的随机数

matlab 中randn randi rand randsrc的用法以及区别1,rand 生成均匀分布的伪随机数.分布在(0~1)之间 主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数 rand(m,n,'double') ...Matlab中如何用命令方式保存图像&quest;命令很简单,例如下面这个代码将当前图像保存到F1.emf...

weixin_42134234的博客 894

matlab 用循环求和,matlab求和不用循环

用matlaB分析重叠相加、重叠保留法_数学_自然科学_专业资料。1.叠加法 f...i=0; while i<=63 K=K+i; i=i+1; end K = sum(2.^(0:63)) 4、 MATLAB 提供了两种循环结构,一种是 for 循环结构,另一种是__while_循环结构。...matlab s1,t1=toc, tic,k=1:end; 内置求和函数 s2=sum(1....

weixin_42131890的博客 6193

初识C语言——分支与循环结构

生成1-100的随机数,然后进行猜测,若猜测的数字小于随机数则提示猜小了,猜大了同理。b: key < arr[mid], 则key可能在arr[mid]的左半侧,继续到左半侧进行二分查找。在一个有序的序列中,找某个数据是否在该集合中,如果在打印该数据在集合中的下标,否则打印找不到。如果找到返回下标,否则继续,直到区间中没有元素时,说明key不在集合中,打印找不到。循环一直继续,直到所有的数据检测完,所有9的个数已经统计在count计数中。b. 通过/的方式取当前数据的十位,检测十位数据是否是9,

m0_62688743的博客 172

最透彻的关于“随机数种子”和“伪随机数”的产生原理

1.伪随机数并不是假随机数,这里的“伪”是有规律的意思,就是计算机产生的伪随机数既是随机的又是有规律的。 2.随机种子来自系统时钟,确切地说,是来自计算机主板上的定时/计数器在内存中的记数值。 3.随机数是由随机种子根据一定的计算方法计算出来的数值。所以,只要计算方法一定,随机种子一定,那么产生的随机数就不会变。也就是说,伪随机数也是某种对应映射的产物,只不过这个自变量是系统的时间而已 4.

qq_15514565的博客 766
上一篇: 简单的题型(1)
下一篇: 最近遇到的知识点
Code_Solitude
博客等级 码龄116天 1粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值