📄 expressionrandom.java
字号:
/**
*
*/
package sasa.service;
import java.util.Random;
/**
* @author sasa
*
* @version 1.0 2007-4-22 下午12:15:02
*/
public class ExpressionRandom {
private Random ran;
public ExpressionRandom() {
ran = new Random();
}
// 返回一个长度为n的整型数组,数组元素随机且范围在1~m
public int[] randomInt(int m, int n) {
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = ran.nextInt(m);
if (a[i] == 0)
a[i] += 1;
// System.out.println("a[" + i + "]=" + a[i] );
}
return a;
}
// 从原字符串数组中返回一个各元素随机的数组
public String[] randomChar(String[] ch) {
String[] ch1 = new String[ch.length];
for (int i = 0; i < ch.length; i++)
ch1[i] = ch[ran.nextInt(ch.length)];
return ch1;
}
// 返回一个简单的随机算术表达式
/*
* 设每个表达式都有两对括号,利用栈求值时会匹配消失
*
* 四个数一共五种排列方式
* 1. ((a@b)@c)@d
*
* 2. (a@(b@c))@d)
*
* 3. a@((b@c)@d)
*
* 4. a@(b@(c@d))
*
* 5. (a@b)@(c@d)
*/
public String randomString(int m) {
int n = 4;
String[] ch1 = { "+", "-", "*", "/" };
String[] ch = randomChar(ch1);
int[] a = randomInt(m, n);
String[] src = new String[5];
src[0] = "((" + a[0] + ch[0] + a[1] + ")" + ch[1] + a[2] + ")" + ch[2]
+ a[3];
src[1] = "(" + a[0] + ch[0] + "(" + a[1] + ch[1] + a[2] + "))" + ch[2]
+ a[3];
src[2] = a[0] + ch[0] + "((" + a[1] + ch[1] + a[2] + ")" + ch[2] + a[3]
+ ")";
src[3] = a[0] + ch[0] + "(" + a[1] + ch[1] + "(" + a[2] + ch[2] + a[3]
+ "))";
src[4] = "(" + a[0] + ch[0] + a[1] + ")" + ch[1] + "(" + a[2] + ch[2]
+ a[3] + ")";
return src[ran.nextInt(5)];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -