ASP.NET (Web) + C#算法 | 生成随机数字序列(随机数字+每个数字取随机不重复的位置和颜色)

简介: 关于今天的一个关于ASP的课后作业,是要求在ASP上实现随机生成数字序列:具体要求:随机位置:每个数字的位置相对随机;随机颜色:每个数字的颜色随机且不重复;随机数字:从0到9随机取出四个数;正文首先放上核心算法,这里我觉得在common.

关于今天的一个关于ASP的课后作业,是要求在ASP上实现随机生成数字序列:

具体要求:

  1. 随机位置:每个数字的位置相对随机;
  2. 随机颜色:每个数字的颜色随机且不重复;
  3. 随机数字:从0到9随机取出四个数;



正文


首先放上核心算法,这里我觉得在common.cs中编写比较妥当:

img_dcb8a7ef57b337514698ec0a54594060.png

    public static int[] GetRandom(int minValue, int maxValue, int count)
    {
        int[] intList = new int[maxValue];//创建一个以  最大值大小  为长度的数组
        for (int i = 0; i < maxValue; i++)//数组的内容:最小值+(从 0 到 最大值减一 ),及intList为一个特殊规律的不重复的递增数组
        {
            intList[i] = i + minValue;
        }
        int[] intRet = new int[count];//创建以  要取的数的个数  为长度的数组
        int n = maxValue;
        Random rand = new Random();
        for (int i = 0; i < count; i++)
        {
            int index = rand.Next(0, n);//随机取一个0到n之间的数
            intRet[i] = intList[index];
            intList[index] = intList[--n];
        }

        return intRet;
    }

//n是一个递减变化的数
//intList的一个运行模拟序列:
//0 1 2 3 4 n = listlength = 5,取到1
//0 4 2 3 | 4 n = listlength = 4,取到4
//0 3 2 | 3 4 n = listlength = 3
//...
//不断用最后面的值来覆盖选中到的值,再把最后面的值去掉(通过n--实现,抽象意义上“截短”提供数字的intList),由此实现不重复序列

详细解析见以上的代码截图。



接着是.aspx.cs文件(下图为部分剪影,后方附上完整代码):

img_089017ae5481eb521f9947a9df5a3551.png

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
using System.IO;
using System.Drawing;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Random rd = new Random();
        int num = rd.Next(1000,10000);
        string textString = num.ToString();

        int widthx = 800;
        int heightx = 600;
    
        Bitmap btmap = new Bitmap(widthx, heightx);
        Graphics gg = Graphics.FromImage(btmap);
        SolidBrush sb = new SolidBrush(Color.White);
        gg.FillRectangle(sb, new Rectangle(0, 0, widthx, heightx));
        
        Font ft = new Font("楷体",18,FontStyle.Strikeout);
        SolidBrush sbft = new SolidBrush(Color.Black);
        Color[] cr = {Color.Red,Color.Black,Color.Blue,Color.Yellow,Color.Gray,Color.Orange};
        //gg.DrawString(textString.Substring(0,textString.Length/2), ft , sbft, new PointF(0,0));
        //gg.DrawString(textString.Substring(5,5), ft, sbft1, new PointF(0, 300));

        int[] rdlist = common.GetRandom(0,cr.Length,textString.Length);//产生一个随机的不重复的int列表

        int leftmargin = 0;
        for (int i=0; i < textString.Length; i++)
        {
            //使用时,顺序对这个int列表取值即可
            gg.DrawString(textString.Substring(i,1),ft,new SolidBrush(cr[rdlist[i]]),leftmargin,leftmargin+100+rd.Next(-15,15));
            leftmargin = leftmargin + 18;
        }
        MemoryStream ms = new MemoryStream();
        btmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
        Response.ClearContent();
        Response.ContentType = "image/gif";
        Response.BinaryWrite(ms.ToArray());
        
    }
}

至此便实现了要求了,下面放上效果图:

img_92e3da1e30e716cfe0562d24e77ccd08.png

img_80cf3189bc1f2c4509f0c489bb576ffe.png

img_d4009cd2d3f9cc3ff952c1af074c4a85.png







算法参考文章

目录
相关文章
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
765 35
|
运维 前端开发 C#
一套以用户体验出发的.NET8 Web开源框架
一套以用户体验出发的.NET8 Web开源框架
591 7
一套以用户体验出发的.NET8 Web开源框架
|
开发框架 数据可视化 .NET
.NET 中管理 Web API 文档的两种方式
.NET 中管理 Web API 文档的两种方式
434 14
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
692 18
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
719 0
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
840 12
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
350 6
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
361 6
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
410 6