英语7选5乱蒙(不重复),全错的概率
英语七选五乱蒙,当然是不重复地蒙。
求这个概率,最容易想到的当然是穷举法,但是七选五的穷举要求不重复,那么,使用递归来求解是一个不错的解决方案
本文主要使用python来实现
首先计算所有情况的总数
1all=7*6*5*4*3
定义递归函数f(list),这个函数的作用就是选择一个答案并且保证这个答案与相应的正确答案不同,其中输入参数list代表之前的选择情况。
我们不妨记正确答案为[1,2,3,4,5]。
如果列表长度已经达到了5,那么就说明选完了,将allIncorrect自增。
否则,挨个尝试选1~7,记作next,并且要使这个值不能是正确答案next!=len(list)+1,也不能重复出现next not in list,之后将list复制一份,添加next到末尾,继续调用f(list)。
1234567891011def f(list): global allIncorrect if len(list)==5: allIncorrect+=1 return for next in range(1,8):#1,2,3,4,5, ...
将陀螺仪数据转换为仰角与水平旋转角
突然想起一年多前,需要将手机空间姿态,同步到一个设备上,而这个设备只能水平旋转或者改变仰角
首先,先读取手机初始状态四元数,记为q0q_0q0,因为这个空间姿态的变化相对于手机来说是相对的,然后再读取每一时刻的四元数,记为qqq,记相对初始状态的相对四元数为q1q_1q1,根据四元数旋转的复合,那么有
q=q0q1即q1=q0−1q\begin{aligned}
q&=q_0q_1\\
即q_1&=q_0^{-1}q
\end{aligned}
q即q1=q0q1=q0−1q
那么到此,我们已经得到了相对四元数q1q_1q1。
为了获得使手机的朝向,根据下图,我们可以构造一个3D向量(0,1,0)(0,1,0)(0,1,0),代表手机指向的方向,记为p0p_0p0
将q1q_1q1旋转作用于p0p_0p0,可得
p1=q1p0q1−1p_1=q_1p_0q_1^{-1}
p1=q1p0q1−1
显然,p1p_1p1的坐标即代表着手机朝向,将其记为(x,y,z)(x,y,z)(x,y,z)
记与xxx轴的夹角为α∈(−π,π]\al ...
小结不定积分
此篇文章尚未写完
总体思路
换元法1
应当注意整体: d(sin2x)=2sinx dsinx=2sinxcosx dxd(\sin^2x)=2\sin x\ d\sin x=2\sin x \cos x \ dxd(sin2x)=2sinx dsinx=2sinxcosx dx
换元法2
万能代换(三角函数->有理函数)u=tanx2:sinx=2u1+u2,cosx=1−u21+u2,dx=2du1+u2u=\tan \frac{x}{2}:\sin x=\frac{2u}{1+u^2},\cos x=\frac{1-u^2}{1+u^2},dx=\frac{2du}{1+u^2}u=tan2x:sinx=1+u22u,cosx=1+u21−u2,dx=1+u22du
分部积分法
若有三角函数,注意能否轮回
拆乘积为加减,分开求积分
1x(x−1)=1x−1−1x\frac{1}{x(x-1)}=\frac{1}{x-1}-\frac{1}{x}x(x−1)1=x−11−x1
1(x−a)(x+a)=12a(1x−a−1 ...
将Blazor-WASM-APP迁移到.Net8.0
1
首先,要更改TargetFramework
1<TargetFramework>net8.0</TargetFramework>
2
然后在Nuget包管理器中升级
3
最后,最重要的
右键点击Blazor项目,点击清理,不然网页无法正常显示
参考资料
How to migrate your Blazor Server app to .NET 8
Github Issue
初步上手Flask 完成一个提交页面
最近需要通过网络收集一些资料,又不想用腾讯文档这些臃肿的东西,就自己写了一个Web服务来收集信息
python用来写服务端非常简单
其实前端核心也就是这句话
1fetch("/add?add=" + value)
和服务端的这句话
123456@app.route('/add')def add(): add = request.args.get('add') print("Add: ",add) save(add) return "成功"
以下是全部代码
1234567891011121314151617181920212223242526272829from flask import Flask, requestapp = Flask(__name__) def save(t): with open("sayings.txt","a",encoding='utf8') as f: ...
四元数使物体始终保持竖直向上
在Unity中利用刚体RigidBody使物体运动是非常容易的事,但是有时有时不希望物体倒下,这就要复杂一些,因为Unity使用四元数Quaternion来表示旋转。
但其实四元数也不算难
先上代码,将这段代码放在Update()函数中
123456789101112var dst_quaternion = transform.rotation;var angle = Mathf.Acos(dst_quaternion.w);//arccosif(dst_quaternion.y < 0){ angle = -angle;}var sin_value = Mathf.Sin(angle);dst_quaternion.z = 0;dst_quaternion.y = sin_value;dst_quaternion.x = 0;transform.rotation=dst_quaternion;//apply the transform
解释
四元数的一种几何解释是如果物体围绕一个轴 (ax,ay,az)(a_x,a_y,a_z)(ax,ay,a ...
适用于Blazor_Webassembly的Github-action配置文件
Github-action实在是太好用了,最近在搞Blazor Webassembly,去网上抄袭了一圈,得到了以下config
1234567891011121314151617181920212223242526272829name: .NETon: push: branches: [ "master" ] pull_request: branches: [ "master" ]permissions: contents: writejobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup .NET uses: actions/setup-dotnet@v3 with: dotnet-version: 7.x.x - name: Publish with dotnet run: dotnet publish --configuration ...
用给定的数字组成最大的3的倍数
题目
给定一个数组,里面有若干个0-9的数字, 可能会重复出现,找出用这些数组成的最大的3的倍数
1int result = solution(int[] array);
parameter
type
meaning
array
int[]
由0-9的数字组成,可以重复出现
result
int
排列array里的数字,得到最大的能被3整除的数
思路
由于3的特殊性,组成该数的所有数字也能被3整除
从结果反推
1最大的3的倍数=合并(降序(数字集合))
那么该如何找这个数字集合呢
针对这一问题,可以将所有数字分为三类
variable
meaning
numLeft0
除以3余0即3的倍数的集合
numLeft1
除以3余1的数的集合
numLeft2
除以3余2的数的集合
显然,numLeft0应该是数字集合的子集
1数字集合.concatenate(numLeft0)
对于numLeft1和numLeft2
我们希望优先考虑数字更大的数,因此,我们将这两个列表降序排列
为了使引入的数是3的倍数,可以考虑重复向数字集合中同时添 ...
适用于React的Github-Action配置文件
最近想给react配置一个自动构建,在网上查(chao)阅(xi)了许多资料,作为一个缝合怪,终于是把yml文件配置好了
12345678910111213141516171819202122232425262728293031323334353637# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejsname: Node.js CIon: push: branches: [ "master" ] pull_request: branches: [ " ...
Flutter局部跳转
flutter局部跳转的思路其实很简单,只需要在一个控件外创建一个根路由,仿照安卓的命名,我给这个路由起名叫Fragment
123456789101112131415161718class Fragment extends StatelessWidget { final Widget child; final String root; const Fragment({required this.child, this.root = "/", super.key}); @override Widget build(BuildContext context) { return Navigator( initialRoute: root, onGenerateRoute: (RouteSettings settings) { WidgetBuilder builder; builder = (context) => child; ret ...