本次学习内容:
1、判断闰年
润年规则:四年一闰,百年不润,四百年再润
给出算法:
public class LeapYearQuestion {static int isLeapYear(int year){if((year%4==0)&&(year%100!=0)||year%400==0){return 1;}else{return 0;}}public static void main(String[] args){System.out.print("输出2000~3000的所有闰年n");int count=0;for(int i=2000;i<3000;i++){if(isLeapYear(i)==1){System.out.print(i+"t");count++;if(count%10==0){System.out.println("n");}}}} }
123456789101112131415161718192021222324252.多项式计算
2.1一维多项式求值
一个通用的计算多项式的值的算法可以采用递推的方式。首先将多项式可以变形为如下的等价形式:
P(x)=(…((an-1x+an-2x)*x+an-3)x+…+a1)x+a0
通过这个表达式可以看出,只要从里面往外一层一层地按照如下的方式递推,便可以计算得到整个一维多项式的值。
Rn-1 =an-1;
Rk=Rk+1x +ak;
k=n-2,…,1,0
通过一层一层计算后,得到的Ro便是多项式P(x)的值。
一维多项式求值算法:
static double po1D(double a[],int n,double x){double result = a[n-1];for(int i=n-2;i>=0;i--){result=result*x+a[i];}return result;} 1234567
实例代码:
public class Polynomial1D {static double po1D(double a[],int n,double x){double result = a[n-1];for(int i=n-2;i>=0;i--){result=result*x+a[i];}return result;}public static void main(String[] args) {double[] a={-15,-7,7,2,-3,7,3};double[] x={-2.0,-1,0,1,2,2.5};for(int i=0;i<x.length;i++){System.out.println("当x="+x[i]+"时,p(x)="+po1D(a,7,x[i]));}} }
123456789101112131415161718192021223.1 java语言中的随机方法
3.1.1、Math.random()方法,产生的随机数是0~1之间的一个double,我们可以把它乘以一定的数,比如说乘以100,它就是个100以内的随机。
3.1.2、 java.util 包里面提供的Random的类,我们可以新建一个Random的对象来产生随机数,它可以产生随机整数、随机float、随机double、随机long。
3.1.2、 System类中有一个currentTimeMillis()方法,这个方法返回一个从1979年1月1日0点0分0秒到目前的一个毫秒数,返回类型是long,我们可以拿它作为一个随机数。
使用Random产生随机方法如下:
public class Random {public static void main(String[] args){java.util.Random r = new java.util.Random();for(int i=0;i<10;i++){for(int j=0;j<10;j++){System.out.printf("%3d ",r.nextInt(100));}System.out.println();}} } 123456789101112
3.2 【0,1】之间的均匀分布的随机数的算法
首先,设定一个基数base=256.0,以及两个常数 a = 17.0 和 189.0。这里,基数base一般取2的整数倍,常数a和b可以根据经验来随意取。
代码如下:
static double rand(double[] a){double base,u,v,p,temp1,temp2,temp3;base=256.0;u=17.0;v=189.0;temp1 = (a[0])*u+v;temp2 = (int)(temp1/base);temp3 = temp1-temp2*base;a[0]=temp3;p=a[0]/base;return p;} 123456789101112
3.3 产生任意范围的随机数
跟上述方法一样,不过在输出出需要构造一下,下面是详细代码:
[m,n]之间的浮点随机数
public class Rand01 {static double rand(double[] a){double base,u,v,p,temp1,temp2,temp3;base=256.0;u=17.0;v=189.0;temp1 = (a[0])*u+v;temp2 = (int)(temp1/base);temp3 = temp1-temp2*base;a[0]=temp3;p=a[0]/base;return p;}public static void main(String[] args){double[] a= {5.0};int m=50.0;int n=100.0;System.out.println("产生0~1的随机数如下:");for(int i=0;i<7;i++){System.out.printf("%d ",m+(n-m)*rand(a));}} }
1234567891011121314151617181920212223242526273.4【m,n】之间均匀分布的随机整数算法
有了上面的[0,1]之间的均匀分布的随机数算法,如果要得到整数,也非常简单,只要结果取整即可。
实例代码:
public class Rand01 {static double rand(double[] a){double base,u,v,p,temp1,temp2,temp3;base=256.0;u=17.0;v=189.0;temp1 = (a[0])*u+v;temp2 = (int)(temp1/base);temp3 = temp1-temp2*base;a[0]=temp3;p=a[0]/base;return p;}public static void main(String[] args){double[] a= {5.0};int m=50;int n=100;System.out.println("产生0~1的随机数如下:");for(int i=0;i<7;i++){System.out.printf("%d ",m+(int)((n-m)*rand(a)));}} }
123456789101112131415161718192021222324254、复数运算
复数的加减乘除运算:
public class Plural {//加法static void cPlus(double a,double b,double c,double d, double[] e, double[] f){e[0]=a+c;f[0]=b+d;}//减法static void cJian(double a, double b, double c, double d, double[] e, double[] f){e[0]=a-c;f[0]=b-d;}//乘法static void cCheng(double a, double b, double c, double d, double[] e, double[] f){e[0]=a*c-b*d;f[0]=a*d+b*c;}//除法static void cShu(double a, double b, double c, double d, double[] e, double[] f){double sq;sq = c*c+d*d;e[0]=(a*c+b*d)/sq;f[0]=(b*c-a*d)/sq;}static void cPowN(double a, double b, int n, double[] e, double[] f){double result;int i=0;e[0]=a;f[0]=b;if(n==1){return ;}else{for(i=1;i<n;i++){cCheng(e[0],f[0],a,b,e,f);}}}public static void main(String[] args){double a,b,c,d;double[] e = {0.0};double[] f = {0.0};a=4;b=6;c=2;d=-1;cPlus(a,b,c,d,e,f);System.out.println("( "+a+ "+"+b+"i"+") "+"+"+ "("+c+"+"+d+"i"+") ="+e[0]+"+"+f[0]+"i");cJian(a,b,c,d,e,f);System.out.println("( "+a+ "+"+b+"i"+") "+"-"+ "("+c+"+"+d+"i"+") ="+e[0]+"+"+f[0]+"i");cCheng(a,b,c,d,e,f);System.out.println("( "+a+ "+"+b+"i"+") "+"*"+ "("+c+"+"+d+"i"+") ="+e[0]+"+"+f[0]+"i");cShu(a,b,c,d,e,f);System.out.println("( "+a+ "+"+b+"i"+") "+"/"+ "("+c+"+"+d+"i"+") ="+e[0]+"+"+f[0]+"i");} }
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061625、阶乘
5.1 使用循环来计算阶乘
long fact(int n) {int i;long result=1;for(i=1;i<=n;i++){result*=i;}return result; } 1234567891011
5.2 使用递归来计算阶乘
long fact(int n){if(n<=1)return 1;elsereturn n*fact(n-1); } 1234567
相关知识
动物界的数学天才
《鼠小弟爱数学全套10册2
添加符号:6 6 6 = 35,难度太大 #数学思维 #小学数学
《爆炸生活的数学思维悦读宠物狗大赛/爆炸生活的数学思维悦读1
如果解决了P=NP,世界将会怎样?看看千禧年七大数学难题之一
初中数学计算一定要写解:原式= 吗
小班数学活动反思:小动物运动会(小一班 余萍)
狗狗基本训练技巧之纠正不良行为视频教程(20节课 家狗乖狗狗)
动物医学研究生都考什么,考数学吗
【有关2的次方的找规律(数学高手进)观察下列各式:2+1=3=2^2
网址: 基本数学问题 https://m.mcbbbk.com/newsview161094.html
上一篇: 魔兽世界猎人宠物训练点 |
下一篇: 交叉验证中cv=? 与 cv=K |