<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>算法 on 豆子技术站</title><link>https://blog.91demo.top/tags/%E7%AE%97%E6%B3%95/</link><description>Recent content in 算法 on 豆子技术站</description><generator>Hugo -- 0.155.1</generator><language>zh-cn</language><lastBuildDate>Sun, 07 Jan 2018 12:40:16 +0800</lastBuildDate><atom:link href="https://blog.91demo.top/tags/%E7%AE%97%E6%B3%95/index.xml" rel="self" type="application/rss+xml"/><item><title>实战笔记：从一个按钮到全能生成器，随机数功能的“进化论”</title><link>https://blog.91demo.top/tool-random/</link><pubDate>Sun, 07 Jan 2018 12:40:16 +0800</pubDate><guid>https://blog.91demo.top/tool-random/</guid><description>&lt;p&gt;这个工具是我的图腾，还记得我之前提到的吗？2018 年，“豆子工具”的初版只有一个功能：点一下按钮，生成一个随机数。&lt;/p&gt;
&lt;p&gt;那时候的代码逻辑极其简单，甚至算不上一个“工具”。但随着这几年自己在开发、运维过程中不断遇到“需要一个复杂密码”、“需要一个 16 位纯金钥”或者“需要一个全大写 ID”等实际场景，我发现&lt;strong&gt;简单的随机数其实并不简单&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="痛点单一随机数的局限"&gt;痛点：单一随机数的局限&lt;/h3&gt;
&lt;p&gt;早期的随机数功能非常死板，生成的格式往往不是我想要的。每次生成后，我可能还需要手动去改长度、改大小写，甚至手动补上特殊字符。&lt;/p&gt;
&lt;p&gt;作为一个开发者，如果一个工具不能让我“一键到位”，那就是不合格的。&lt;/p&gt;
&lt;h3 id="进化高度自定义的融合模式"&gt;进化：高度自定义的“融合模式”&lt;/h3&gt;
&lt;p&gt;于是，我把这些年所有关于“随机”的需求全部揉碎、重组，将它升级成了一个全能的生成器。&lt;/p&gt;
&lt;p&gt;现在的随机数功能，不再是盲目地随机，而是&lt;strong&gt;基于规则的精准生成&lt;/strong&gt;。我为其设计了一套组合逻辑：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;长度自定义&lt;/strong&gt;：不再局限于几位数字，用户可以根据需求自由输入长度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;字符集自由组合&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;纯数字&lt;/strong&gt;：适用于验证码类场景。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;纯字母&lt;/strong&gt;：适用于临时 ID 或变量命名。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;字母+数字&lt;/strong&gt;：兼顾强度与易读性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;含特殊字符&lt;/strong&gt;：专门为高强度随机密码设计。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结果格式化&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;支持结果一键&lt;strong&gt;转大写&lt;/strong&gt;或&lt;strong&gt;转小写&lt;/strong&gt;。这在配置某些特定系统的 API Key 时非常有用，省去了手动切换输入法的麻烦。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我经常使用它生成一些随机数作为密码，密钥。我不用去数长度，或者生成后，我简单调整一下，让它有一点意义，我再去使用。&lt;/p&gt;
&lt;p&gt;它使用小程序本地实现，下面是一段核心代码，描述了如何去实现随机数：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;// 生成随机字符串
genRndStr(rtype) {
const that = this;
if (utils.isEmpty(that.data.input1)) {
wx.showToast({
title: &amp;#39;内容为空&amp;#39;,
})
return
}
let result = &amp;#39;&amp;#39;;
switch (rtype) {
case 1:
// 纯数字
result = utils.randNumber(that.data.input1);
break;
case 2:
// 纯字母
result = utils.randLetter(that.data.input1);
break;
case 3:
// 字母和数字
result = utils.randStr(that.data.input1);
break;
case 4:
// 含特殊字符
result = utils.randSymbol(that.data.input1);
break;
}
that.setData({
result1: result
})
},
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="思考小功能里的产品观"&gt;思考：小功能里的“产品观”&lt;/h3&gt;
&lt;p&gt;虽然随机数在技术实现上只是简单的字符数组随机采样，但从产品角度看，它体现了一种**“减少用户操作”**的原则。&lt;/p&gt;</description></item></channel></rss>