- 博客(16)
- 收藏
- 关注
原创 所有值
可以看到,在上述算法中,最为核心的地方在于将问题从一个小生成大的问题转换为一个大生成小的问题。而具体的实现方式上,上述思路采用的是大拆小的模型,将目标范围通过因式分解的方式拆分为若干个概率相同且可以被当前随机数生成覆盖的子范围,从而进行求解。但是上述方法受限于拆分过程必须是拆分为等概率的几个子范围,即是说必须是因式分解可分的,但是如果目标范围是一个质数或者因子中存在一个数大于当前的随机数生成器,上述思路就会失效。不过,我们可以将上述拆分的思路反着来,不是缩减目标范围,而是将当前随机数生成器进行等比例放
2021-01-03 09:56:31
679
原创 算法分析
可以看到,整体而言,每一次随机数生成所需要调用的rand7()的期望次数为 7 / 6 + 7 / 5 ≃ 2.57 7/6+7/5\simeq 2.57 7/6+7/5≃2.57。但是上述算法的限制也十分的明显,需要目标范围可以进行因式分解为两个小数的乘积,否则就无法原模原样地照抄上述的算法,比如rand11(),就无法采用分解的方式进行求解。但是,这个问题也不是无解,上述相同的思路只要稍作调整,我们还是可以进行求解的。...
2021-01-03 09:55:11
80
原创 代码实现
给出python代码实现如下:def rand2():while True:seed = rand7()if seed != 7:return seed % 2 + 1def rand10():return 5 * (rand2()-1) + rand5()
2021-01-03 09:54:14
108
原创 see
显然,如此一来一个1到5的随机数生成器就完成了,当然,效率上会略有损失,每一个随机数的生成所需要的rand7()的期望运行次数为1.4次,当时整体而言,这个值都不会高于2,因此,事实上大生成小的问题总是简单的。那么,针对小生成大的问题,事实上也同样可以尝试将其拆解为大生成小的问题进行解决。一种比较简单的思路就是,由于 10 = 2 × 5 10 = 2 \times 5 10=2×5,因此,我们可以使用rand7()构造两个rand5()生成器,然后合并成一个rand10()生成器。...
2021-01-03 09:53:16
78
原创 leetcode
随机数生成这个经典算法题我相信大部分人都知道,尤其刷过leetcode或者有过面试经历的,无非就是给定一个随机数生成器,然后取生成另一个范围内的随机数。一个典型的例子就是使用rand7生成rand10。因此,这里,我们就以rand7生成rand10为例进行讨论,考察一下有哪些实现思路,并对其进行一定的拓展延伸。...
2021-01-03 09:52:01
47
原创 tkinter
tkinter库的那篇博客(python笔记:可视化界面写作尝试)真的是写的我心力憔悴啊,其实东西并不难,就是多,然后一开始又没有找到比较靠谱的官方文档,搞得我没写一个组件的应用就得去看源码,然后自己写代码尝试,搞得累的半死。唉,所以这里就休息一下,再写上一篇小文章休息一下好了,也算是劳逸结合了。所以,这里,就让我们来看一下另外一道经典的算法题:随机数生成问题好了。...
2021-01-03 09:50:40
53
原创 vite
什么是viteVite,一个基于浏览器原生 ES imports 的开发服务器。利用浏览器去解析 imports,在服务器端按需编译返回,完全跳过了打包这个概念,服务器随起随用,支持热更新,而且热更新的速度不会随着模块增多而变慢。针对生产环境则可以把同一份代码用 rollup 打包vite的天然优势:快速冷启动服务器即时热模块更换(HMR)真正的按需编译...
2020-12-31 11:40:44
172
原创 click
圆点设置,点击圆点,切换相应图片 第三步 $("#banner_yuandian>li").on("click",function(){ //点击圆点时的下标取共同下标 var index=$(this).index();//出错的地方index()语法 //点击下标时展现对应的图片,其他兄弟图隐藏 $("#banner_img>li").eq(index).show(1000).siblings().hide(1000)
2020-12-31 11:16:20
134
原创 index
设置图片,圆点,箭头共同的下标 从0开始 var index=0; //封装轮播的函数 第一步 function show(){ //下标每次+1增加 index+=1; //如果下标大于等于图片的长度数,返回第一张图,即是下标index=0就行 if(index>=$("#banner_img>li").length){ index=0; } ..
2020-12-31 11:14:38
306
原创 show()
下一张 可以直接调用 $("#banner_next").on("click",function(){ show(); }) //点击button按钮再次清除计时器和添加计时器 $("button").hover( function(){ clearInterval(x); }, function(){ x=setInterval(show,2000); ...
2020-12-31 11:13:38
380
原创 function()
然后,把前端代码的请求地址修改一下,此时前端访问的就不再是node的服务了,而是要访问nginx, 然后通过nginx做响应的转发// 给button添加点击事件$(‘button’).click(function(){$.ajax({url:‘http://localhost:8000/user/find’,success:function®{console.log®},error:function(e){console.log(e)}})...
2020-12-31 11:09:21
59
原创 listen
注意, listen那里不要使用node服务的3000,之前我是想着直接监听node的服务端口,应该是可以的,可是这样会占用3000接口,导致node服务启动不了上面代码的意思是,把访问localhost:8000 转换成访问 localhost:5500,而访问localhost:8000/user… 则转换成localhost:3000/user配置完成之后需要在终端中,使用 nginx -s reload 更新我们的配置启动nginx的命令是 start nginx...
2020-12-31 11:06:21
69
原创 node
然后开启node服务这个时候,如果打开页面访问接口,会出现跨域报错,如下图所示:注意,打开文件的时候一定要在服务中打开,不要使用绝对路径打开接着就是配置nginx文件,解决这个跨域问题反向代理的意思就是把前端的地址和后端的地址 使用nginx转换到相同的地址下,如把上面的node服务3000端口 和 网页打开的服务5500端口都转换到 nginx的8000端口下...
2020-12-31 11:04:46
110
原创 let
使用前,需要安装express npm install expresslet express = require(‘express’)// 创建应用let app = express()// get请求app.get(’/user/find’,(req,res)=>{res.send(‘hello’)})// 启动服务,监听端口app.listen(3000,()=>{console.log(‘启动成功…’)...
2020-12-31 11:03:09
61
原创 nginx
在我们前端开发的过程中, 相信大家都遇到过一个让人头疼的问题,那就是跨域问题. 跨域解决的方式有很多,这里主要讲的是如何来用 nginx来解决我们所遇到的跨域问题在我们开始之前,首先要知道跨域是如何产生的...
2020-12-31 11:02:21
38
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人