首页 > 代码库 > 课程3动手动脑.
课程3动手动脑.
1.纯随机数发生器
Xn+1=(aXn + c)mod m
Modulus=2^31-1=int.MaxValue
Multiplier=75=16807
C=0
当显示过2^31-2个数之后,才可能重复。
动手动脑: 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。
package demo;
//RandomInt.java
//Shifted, scaled random integers
import javax.swing.JOptionPane;
public class Random {
public static void main( String args[] )
{
int value;
String output = "";
for ( int i = 1; i <= 1000; i++ ) {
value = http://www.mamicode.com/1 + (int) ( Math.random() * 1000 );
output += value + " ";
if ( i % 5 == 0 )
output += "\n";
}
JOptionPane.showMessageDialog( null, output,
"20 Random Numbers from 1 to 6",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
}
}
程序截图:,这是随机生成50个数的,若要生成1000个数,可将程序中的i的大小设置位1000.
2.请看以下代码,你发现了有什么特殊之处吗?
上述示例代码展示了Java的“方法重载(overload)”特性。
满足以下条件的两个或多个方法构成“重载”关系:
(1)方法名相同;
(2)参数类型不同,参数个数不同,或者是参数类型的顺序不同。(方法的返回值不作为方法重载的判断条件。)
3、用组合数公式利用n!来计算。
代码:
package demo;
import java.math.BigInteger;
import java.util.Scanner;
public class project {
public static void main(String[] args)
{
System.out.println("输入N");
Scanner scan = new Scanner(System.in);
System.out.println("输入k");
Scanner scan1 = new Scanner(System.in);
int number1 = scan.nextInt();
int number2 = scan1.nextInt();
System.out.println("The result is :" + calculateN2(number1,number2));
}
public static long calculateN(int n){
if(n<=0){
return 1;
}
else
{
return n*calculateN(n-1);
}
}
public static long calculateN2(int n,int k){
if(calculateN(n) == 0 || calculateN(k) == 0)
{
return 0;
}
else
{
return calculateN(n)/(calculateN(k)*calculateN(n-k));
}
}
}
截图:
4、回文数的判断
程序:public class Recursive {
public static void main(String[] args) {
System.out.println("Is 我是谁是我 a Palindrome?"+isPalindrome("abcdcba"));
}
public static boolean isPalindrome(String s){
if(s.length()<=1){
return true;
}else if(s.charAt(0) != s.charAt(s.length()-1)){
return false;
}
return isPalindrome(s.substring(1,s.length()-1));
}
}
截图:
课程3动手动脑.