·

JS生成任意长度的随机汉字

发布时间:2024-08-28 11:15:56阅读量:81
专业文章
转载请注明来源

最近突发奇想,想试试用编程方式请求百度来进行随机搜索,这就需要随机生成一窜汉字字符。经过网络上的一番搜索,发现可以用unicode编码来实现。

Unicode编码是16进制数,其中汉字对应范围是[\u4e00-\u9fa5],而4e00和9af5是16进制值。因此我们需要通过parseInt转换,得到他们10进制的数值19968-40869,也就是下文中的start和end。

接着我们再随机生成start和end之间的一个数,然后将这个数转换成16进制,并用\u拼接起来,这样一个随机的代表汉字的Unicode编码就产生了。如果需要生成多个汉字,则直接使用for循环即可。最后用eval输出一下生成的随机Unicode编码,就能得到一窜随机的汉字。

const createRandomChinese = (count:number) => {
    const start = parseInt('4e00', 16)
    const end = parseInt('9fa5', 16)
    let name = ''
    for(let i = 0; i < count; i++) {
        const cha = Math.floor(Math.random() * (end - start))
        name += '\\u' + (start + cha).toString(16)
    }
    return eval(`'${name}'`)
}

测试结果如下:

最后提一嘴,如何通过fetch对百度发起随机搜索请求。首先通过开发者模式,观察搜索过程中的网络请求,发现想通过编程方式对百度发起搜索请求,可以用fetch发送GET请求:

fetch('https://www.baidu.com/s?wd=%E8%A1%A8%E7%A4%BA%E8%AE%BA&rsv_spt=1&rsv_iqid=0xe96276d80016e9b0&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug2=0&rsv_btype=i&inputT=1778&rsv_sug4=2384')

这里的wd参数,就是我们搜索时输入的字符串。因此,上面我们有了随机的汉字字符串,想要借此发起随机搜索请求,就很容易了,直接这么写

const RandomSearch = (count:number) => {
    const start = parseInt('4e00', 16)
    const end = parseInt('9fa5', 16)
    let name = ''
    for(let i = 0; i < count; i++) {
        const cha = Math.floor(Math.random() * (end - start))
        name += '\\u' + (start + cha).toString(16)
    }
    let chinese = eval(`'${name}'`)
    fetch(`https://www.baidu.com/s?wd=${chinese}&rsv_spt=1&rsv_iqid=0xe96276d80016e9b0&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug2=0&rsv_btype=i&inputT=1778&rsv_sug4=2384`)
    .then((res)=>console.log(res))
}

不过这可能只能在控制台可以执行,不然会有跨域问题,在本文中就不多说了。

评论区

暂无评论,来发布第一条评论吧!

弦圈热门内容

怀尔斯的费马大定理证明

费马大定理的证明可以说是算术几何的一个重要里程碑,当年怀尔斯虽然很小的时候就被该问题所吸引,从而选择做一个数学家。但作为一个这么多年都无人能破解的难题,怀尔斯也是兜兜转转,他也没一开始就打算攻克这个猜想。据说,是代数几何取得突破性进展之后,他才觉得是时候攻克费马大定理了。最后他成功证明了谷山-志村猜想,从而证明了费马大定理。可以说怀尔斯能证明费马大定理,是刚好生在一个合适的时代,并站在了巨人的肩膀上,从前人手中接过火炬。怀尔斯关于费马大定理的证明,就是这篇论文Modular elliptic curves and Fermat’s Last Theorem。该论文非常晦涩难懂,没多少人能看得懂,可以说能彻底看懂费马大定理证明的人,都是圈内大佬。论文中涉及的知识面很广,包括椭圆曲线、模形式、伽罗华表示论、代数数论、类域论、群概形等等,想要理解费马大定理就得先理解前面这些理论。不过虽然我们看不懂,但该证明还是非常具有收藏价值的,看不懂也能看,也能欣赏嘛。并且对于做算术几何的人来说,可以用这篇论文来指导自己的学习和研究。Peter Scholze当年不也一上来就看费尔马大定理的证明,虽然un ...

将反向传递看成函子:强化学习的一个复合视角

这篇文章是数学家与计算机科学家合作写的,将范畴论应用于人工智能的强化学习。本文表示,强化学习算法与强化学习算法的复合,还是一个强化学习算法,因而所有强化学习算法构成一个范畴$\textrm{Learn}$。然后在$\textrm{Learn}$里考虑神经网络,并证明在一般情况下,梯度下降也是复合的。如果对纯数学理论,在计算机或者AI有什么应用感兴趣的人,可以看看。我当时下这篇文章,也是好奇代数领域在AI方面有啥应用,其实当时已经知道有个叫热带几何(Tropical Geometry)的领域,就是代数几何在计算机的应用。因为当时AI就很火,但AI可解释性需要很多数学来解决,他们解决不了,所以我留着这篇文章也是打算之后写篇类似的AI应用的文章。

弦圈11月10日上下更新计划:小金库、打赏等功能

这几天忙于写代码完善网站功能,不太有空更新文章和内容。因为弦圈没有借助任何建站工具和博客框架,是我自己前后端一起从零开始写的,因此开发得会比较慢,请谅解。。。目前计划上线功能首先就包括,前面弦圈更新日志:关于智力值和金币提到的小金库。获取金币的机制是:智力值存入银行(叫时空银行time bank?),然后根据日利率每天产生相应的金币。下图为测试画面其次为了让网站能够更好的运作下去,从而给大家提供更好的服务,我计划引入盈利功能。所谓盈利功能即是用户通过弦圈来获得收益的相关功能,包括打赏功能、接广告功能、接悬赏功能。这些功能主要是为了鼓励大家为社区做贡献,并且让需要得到帮助的人更容易获得帮助(毕竟大佬们忙得很,不会轻易帮助你解决问题)。具体规则暂定如下:想要让弦圈的用户能赚钱,那弦圈必须自己先能赚到钱,目前我计划引入弦圈广告和用户交易中心。至于弦圈广告,我打算采用信息流广告、侧边栏广告、文章内嵌广告,拒绝弹窗之类遮蔽视线的广告,因此不会影响用户体验。最后我还得把之前留的坑——创作中心给填上,就是一个给创作者的方便管理内容、查看数据的模块。测试画面如下:尽情期待😇

一个关于定义域光滑不变量的问题

我的提问:定理 22.3(定义域的光滑不变量)令$U \subset\mathbb{R}^n$为一个开子集,$S \subset\mathbb{R}^n$为一个任意子集,并且$f : U \rightarrow S$是一个微分同胚。那么$S$在$\mathbb{R}^n$中是开集。我无法理解为何集合$S$在$\mathbb{R}^n$中并不是自动开的。映射$f$是一个微分同胚,这意味着它在两个方向都是连续的,所以$S$是开的。回答:首先你所知道的是$U$中的开集$V$满足:$f(V)$在$S$中开,不是$f(V)$在$\mathbb{R}^n$中开。所以$f(U)=S$是在$S$中开。那个推断是说接着$f(U)=S$自动在$\mathbb R^n$中开,这是不一样的并且不是自动的。它需要证明。PS:这里说的是拓扑学中关于开集的一个重要盲点,即开集是相对的。尤其是考虑某个拓扑空间中的子集,要弄清楚究竟是在子集内开,还是在全空间内开。

Grothendieck经典著作:代数几何原理EGA 1(1971第二版)法语+英译

在前面几贴中,我已经分别分享了Grothendieck的代数几何三部曲EGA、SGA、FGA,链接如下:代数几何教皇Grothendieck经典著作:代数几何原理EGA法语原版全系列(1)代数几何教皇Grothendieck经典著作:代数几何讨论班SGA法语原版全系列代数几何教皇Grothendieck经典著作:代数几何基础FGA法语原版+英文译版但其实EGA 1还有1971年的第二版,Grothendieck在EGA 1第二版中更新了一些内容,因此一些概念定义会与第一版中有出入。原本我也是不太知道EGA竟然还会有第二版,直到后来有次看文献时,发现作者引用了EGA 1(1971)才知道有这一版本。对比EGA 1第一版跟第二版,感觉第二版要比第一版更好读一些,似乎思路行文更清晰,也更好理解。并且值得开心的是,EGA 1第二版有完整英译,现在我全都分享出来。