C002-CPP-Luhn公式

YOLO26算法星形目标识别+训练好的模型+100张数据集+pyqt可视化界面.zip 附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[星星(Star)] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 85 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9950** mAP50-95 | 0.8477 Precision | 1.0000 Recall | 0.9954 train/box_loss | 0.8235 train/cls_loss | 0.7275 val/box_loss | 0.7248 val/cls_loss | 0.9621 【训练过程分析】 85 轮训练后,我们得到了一个 mAP50 为 0.9950 的模型,这真是让人惊喜的成绩。一开始,模型的训练过程进展非常迅速,loss 在前 20 轮内从 1.5000 下降到 1.0000 附近,此后,loss 依然保持稳步下降,但速度明显放缓,特别是在第 30 轮到第 50 轮之间,loss 曲线进入了一个平台期,大约在 0.85 附近徘徊了 10 轮,直到第 60 轮左右才再度加速下降。这样的表现说明模型在前期阶段收敛良好,但到了后期,确实需要更多的训练轮次以确保模型的稳定性。 在验证集上,val_loss 保持平稳,没有出现明显的波动,这进一步证明了模型没有过拟合。然而,我们注意到在第 80 轮和第 85 轮之间,val_loss 似乎有所微弱的反弹,尽管这种波动并不显著。在训练集上,前 50 轮训... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。 立即下载

使用Luhn算法检验 键入的一串数字 是否合法


Luhn算法:

Luhn 是 模10算法:

符合Luhn算法的数字串包含2部分:具体数字(任意长度) + 校验数字(1个)
比如[1762483],符合Luhn算法,它的两部分是:[176248] + [3]
具体数字是任意的数字,它的校验数字是通过Luhn算法算出来的,计算后得到的整个数字串符合Luhn算法

Luhn算法的步骤:

假设数字串[176248]的校验数字是X,即整个数字串是[176248X],求出X的步骤如下:
1、从[176248X]的右边开始数,偶数位置的数字是[7,2,8],奇数位置的数字是[1,6,4,X]
2、将奇数位的数字相加:sum = 1 + 6 + 4 + X = 11 + X
3、将偶数位的数字都乘以2,得到数字串:[14,4,16]
4、将这个数字串中大于等于10的数字的十位和个位拆开,分别成为2个独立的数字:[1,4,4,1,6]
5、再将这个数字串的每一位加到sum中去:sum = 11 + X + 1 + 4 + 4 + 1 + 6 = 27 + X
6、Luhn算法要求sum必须可以被10整除,而X必须是1位数,所以X = 3,sum = 27 + 3 = 30,sum % 10 = 30 % 10 = 0
7、于是数字串[176248]加上的校验数字是3:1762483


上面是假设数字串已经符合Luhn算法,然后求出校验数字,这用来生成符合Luhn算法的数字串


下面的代码用来检验一个数字串是否符合Luhn算法,即在校验数字已知的情况下,检验数字串的sum是否可以被10整除


代码:

2_3_Luhn.cpp

// ==========================================================================================================
// 2-3节,Luhn算法:检验键入的一串数字是否合法
// 
// ==========================================================================================================
#include "2_3_Luhn.h"

#include <iostream>
// ----------------------------------------------------------------------------------------------------------
//      包含namespace std (@ iostream):
// (1). 换行符用"endl"指令,意为end of line
// (2). cin >> val 是函数调用,成功输入数据到val,返回TRUE,否则返回FALSE
// ----------------------------------------------------------------------------------------------------------
using namespace std;

#define DEBUG   1

// ==========================================================================================================
// 返回一个Luhn数的和
// 
// ==========================================================================================================
int Luhn_get_sum(int data)
{
    int temp;
    int sum;

    if(data > 9)
    {
        cout << "A Luhn number can not bigger than 9" << endl;
        return -1;
    }
    temp = data * 2;
    if(temp >= 10) { sum = 1 + temp % 10; }
    else           { sum = temp; }

    return sum;
}

// ==========================================================================================================
// Luhn公式:求键入的一串数字的Luhn和
// 
// 参数:sum     数字串的Luhn和
//       length  数字串的长度
// 
// (1). 输入的数字字符必须是ASCII码的字符、或是从0到9依次排列的数字字符
// 
// ==========================================================================================================
void Luhn_sum(int *sum, int *length)
{
    char number;    // 接收输入的数字串中的一个元素
    int  count = 0; // 记录数字串的长度
    int  sum_odd  = 0;
    int  sum_even = 0;

    cout << "Enter your number : ";
    while(1)
    {
        cin.get(number);
        if(('\n' == number) || ('\r' == number)) { break; }
        number -= '0';   // 减去序列中的第1个字符(不写成10,因为'0'字符在不同编码系统中的具体值可能不一样)
        count++;
        if(0 == (count % 2))                    // 从左到右数的偶数序列
        {                                       // 
            sum_odd  += Luhn_get_sum(number);   // 奇数长度的数字串:需要翻倍
            sum_even += number;                 // 偶数长度的数字串:不需要翻倍
        }
        else                                    // 从左到右数的奇数序列
        {
            sum_odd  += number;                 // 奇数长度的数字串:不需要翻倍
            sum_even += Luhn_get_sum(number);   // 偶数长度的数字串:需要翻倍
        }
#if DEBUG
        cout << '[' << '(' << count << ") " << (int)number << ',' << sum_odd  << ',' << sum_even  << ']' << endl;
#endif
    }
    *length = count;
    if(0 == (count % 2))
    { *sum = sum_even; }    // 长度为偶数
    else               
    { *sum = sum_odd;  }    // 长度为奇数
}

// ==========================================================================================================
// Luhn公式:检验键入的一串数字是否合法
// 
// ==========================================================================================================
void Luhn_check(void)
{
    int sum;
    int length;

    Luhn_sum(&sum, &length);
#if DEBUG
    cout << "The length of the input numbers = " << length << endl;
    cout << "and the Luhn-sum = " << sum << endl;
#endif
    cout << "The input numbers is " 
         << ((0 == (sum % 10)) ? "LEGAL" : "ILLEGAL" )
         << " (According to Luhn-Rule)" 
         << endl;
}
main.c

// ==========================================================================================================
// 主函数
// ==========================================================================================================


#include <malloc.h>
#include <stdlib.h>
#include <iostream>
using namespace std;

#include "2_3_Luhn.h"

// ==========================================================================================================
// main函数
// 
// ==========================================================================================================
int main(void)
{
// ----------------------------------------------------------------------------------------------------------
//  使用Luhn公式对输入数字串进行检验
    while(1)
    { Luhn_check(); }

// ----------------------------------------------------------------------------------------------------------
    system("pause");
    return 0;
}

测试结果:

(1). 使用Luhn公式作为输入检查的号码:银行卡卡号。

       因而可以使用银行卡卡号来检验。

       这里测试了多个银行卡卡号,结果都OK。

(2). ISBN和身份证等数字串不是使用上面的Luhn算法得出的。




局域网文件传输工具课程设计源码 这是一个基于 Python 标准库实现的局域网文件传输工具课程设计资源包,采用 C/S 架构:一台机器运行服务端监听 9527 端口,其余机器作为客户端填 IP 直连发送文件。包含实验报告三件套、全部源代码、运行截图与答辩 PPT,零第三方依赖,装好 Python 即可运行。 传输主线覆盖分块发送、断点续传、完整性校验与队列管理:文件按 64KB 分块逐块推送,进度条按已发字节实时推进;中断重连后先询问续传偏移,从已收字节位置继续,不必从头重传;收完两端各算一遍 MD5,一致才把 .part 改为正式文件名,不一致判为传输失败;多文件排队依次传输,当前任务可暂停、继续或取消。 协议层以 4 字节大端长度头加 JSON 头约定消息格式,CHUNK 消息另带二进制净荷;代码按常量层、协议层、基础层、网络层、表现层五层划分,依赖方向严格单向,协议格式调整只动 protocol.py,界面与传输逻辑互不牵连。 可靠性设计覆盖文件名超长拒收、超时退出、断线自动重连最多 3 次、握手 8 秒快速失败等情形;传输日志固定 200 行环形缓冲,记录文件名、大小、耗时与平均速率,连接错误可回看。除标准库 socket、struct、threading、hashlib、queue、tkinter 外不引入其他包,Windows、macOS、Linux 均可运行。 适合计算机网络方向的学生作为课设参考,也适合想练习 TCP 字节流协议设计与多线程文件传输落地的自学者。运行方式:接收端 python main.py --mode server 点击开始监听,发送端 python main.py --mode client 填好服务端 IP、端口与昵称连接,添加文件后开始发送,重连自动续传。 立即下载

相关推荐

科技中介服务机构如何提升客户在技术评估与需求匹配环节的服务效率与专业度.docx

科技中介服务机构如何提升客户在技术评估与需求匹配环节的服务效率与专业度

Luhn 算法

Luhn算法 Luhn 算法或是Luhn 公式,也被称作“模10算法”。它是一种简单的校验公式,一般会被用于身份证号码,IMEI号码,美国供应商识别号码,或是加拿大的社会保险号码的验证。该算法是由IBM的科学家Hans Peter Luhn所创造,于1954年1月6日提出该专利的申请,并于1960年8月23日被授予,在美国的专利号为2950048。 该算法一直都被大家所公用,并且时至今

lidechen的专栏 3697

政府科技管理者在推动科技成果转化时,如何高效匹配高校科研成果与企业技术需求.docx

政府科技管理者在推动科技成果转化时,如何高效匹配高校科研成果与企业技术需求

银行卡号校验位的LUHN算法模10“隔位2倍加”校验数的公式

计算LUHN算法模10“隔位2倍加”校验数的公式   计算步骤如下:   步骤1:从右边第1个数字(低序)开始每隔一位乘以2。   步骤2:把在步骤1中获得的乘积的各位数字与原号码中未乘2的各位数字相加。   步骤3:从邻近的较高的一个以0结尾的数中减去步骤2中所得到的总和[这相当于求这个总和的低位数字(个位数)的“10的补数”]。如果在步骤2得到的总和是以零结尾的数(

dtm19931001的专栏 6939

51单片机的温湿度检测报警系统仿真资料

51单片机的温湿度检测报警proteus仿真系统

国央企创新负责人如何通过平台识别并引进关键技术?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Luhn算法(模10算法)检验银行卡号正确性

中文描述: 1、从卡号最后一位数字开始,偶数位乘以2,如果乘以2的结果是两位数,将结果减去9。 2、把所有数字相加,得到总和。 3、如果信用卡号码是合法的,总和可以被10整除。 英文描述 1.Counting from the check digit, which is the rightmost, and moving left, double the va

Daniel的专栏 6534

科技中介服务机构如何打造高效、可复制的技术交易服务流程?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

luhn算法

Luhn 算法或是Luhn 公式,也被称作“模10算法”。它是一种简单的校验公式,一般会被用于银行卡,身份证号码,IMEI号码,美国供应商识别号码,或是加拿大的社会保险号码的验证。该算法是由IBM的科学家Hans Peter Luhn所创造,于1954年1月6日提出该专利的申请。 算法特点:...

chongzongqiao2389的博客 1743

windows自动连接无线网工具

手机开启连接特定蓝牙就自动开热点,windows检测手机蓝牙,检测到后连接蓝牙触发手机开热点,电脑就能自动连接手机热点,实现手机在电脑旁边时电脑能自动连接手机热点。

国央企创新负责人如何优化科技成果转化流程的合规性与透明度?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

银行卡校验规则(Luhn算法)

案例: 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程: 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。 2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。 3、将奇数位总和加上偶数位总和,结果应该可以

ywt_go的专栏 6万+

MuMu模拟器-macos安装包

MuMu模拟器-macos安装包

C002-CPP-函数集合

这是一个目录,收集了一些有用的函数。 编译环境:VS2012

Manon_des_source的博客 629

超全Mathcad全桥LLC谐振变换器开关电源设计mathcad计算书

内容概要:本文档为《超全Mathcad全桥LLC谐振变换器开关电源设计mathcad计算书》,系统性地围绕全桥LLC谐振变换器的开关电源设计展开,重点利用Mathcad工具进行精确的数学建模与参数计算。内容涵盖LLC谐振变换器的核心工作原理、关键参数设计(如谐振频率、励磁电感、变比、品质因数等)、增益特性分析、软开关实现机制及效率优化策略,并结合Simulink、Plecs、PSIM等主流仿真平台构建开环与闭环控制系统,实现变频控制、移相控制及混合控制等多种高级控制策略的仿真验证。文档提供完整的“计算书+仿真模型+设计报告”三位一体技术资料体系,强化理论与工程实践的深度融合。此外,资源包还整合了PFC、DC-DC变换器、双向充放电系统、微电网控制等大量电力电子相关仿真案例,突出其在科研复现、课程设计与工业研发中的高实用价值。; 适合人群:面向电力电子、电气工程及其自动化、新能源系统等相关领域的科研人员、高校研究生及从事高频开关电源设计的工程技术人员,需具备扎实的电路理论基础、自动控制原理知识以及一定的仿真软件操作能力。; 使用场景及目标:① 掌握基于Mathcad的LLC谐振变换器全流程参数设计方法与数学推导逻辑;② 构建并调试全桥LLC的闭环控制系统,实现高效ZVS/ZCS软开关、稳定输出电压与动态响应优化;③ 支持科研项目中的系统建模、仿真验证、论文复现与关键技术攻关,提升设计效率与理论深度。; 阅读建议:建议结合文档中提供的Mathcad计算书与Simulink/Plecs仿真模型同步学习,注重理论公式推导与仿真波形分析之间的对应关系。建议先深入理解LLC基本工作模态与谐振元件的影响规律,再逐步进阶至双闭环控制、恒压恒流切换、混合调制策略等复杂控制逻辑,最终实现高性能、高效率电源系统的自主设计与优化。

地震数据可视化必备:5分钟读懂SEGY道头字段全解析(含坐标定位指南)

本文深入解析了SEGY文件格式中道头坐标字段的提取与可视化方法。针对地震数据处理中的常见痛点,详细介绍了sx/sy、gx/gy等关键坐标字段的二进制解析、比例因子应用、单位转换及常见问题解决方案,并提供了实用的Python代码示例,帮助开发者实现从SEGY文件到三维空间可视化的完整流程。

echo99的专栏 1011

Luhn算法检验和验证

一、Luhn公式介绍 Luhn公式是一种广泛使用的系统,用于对标识号进行验证。它根据原始标识号,把每隔一个数字的值扩大一倍。然后把各个单独数字的值加在一起(如果扩大一倍后的值为2个数字,就把这两个数字分别相加)。如果相加之后可以被10整除,那么这个标识号就是合法的。 编写一个程序,接受一个任意长度的标识号,并根据Luhn公式确定这个标识号是否合法。这个程序在读取下一个字符之前必须处理...

456

Python 逆向解析知乎盐选反爬字体,实现内容精准还原

本文详细解析了知乎盐选内容的反爬字体机制,并提供了使用Python逆向解析WOFF字体文件的完整方案。通过fontTools库构建解码字典,实现乱码文本的精准还原,帮助开发者应对动态字体策略,同时强调法律与道德风险。

weixin_29268385的博客 1296
上一篇: C002-CPP-函数集合
下一篇: B001-Atmega16-定时器1-(ques=1)
Manon_des_sources
博客等级 码龄11年 11粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值