使用代码计算,首先考虑一个问题,就是随机数,目前 Random 函数的随机数存在“伪随机”,就是每次的随机数都是一样的,我们可以通过代码来测试一下:
import java.util.Random;
public class MyClass {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
System.out.println( "第"+i+"次输出结果"+new Random(5).nextInt(100));
}
}
}
避免随机数的方法比较多,有减掉种子参数()、将 Random 对象生成一个对象,每次使用同一个对象,代码验证一下:
import java.util.Random;
public class MyClass {
public static void main(String[] args) {
Random rl = new Random();
for (int i = 0; i < 10; i++) {
System.out.println( "无种子参数第"+i+"次输出结果"+ new Random().nextInt(10));
System.out.println( "同 Random 对象第"+i+"次输出结果"+ rl.nextInt(10));
}
}
}
日志验证结果:
无种子参数第0次输出结果4
同 Random 对象第0次输出结果6
无种子参数第1次输出结果0
同 Random 对象第1次输出结果1
无种子参数第2次输出结果8
同 Random 对象第2次输出结果8
无种子参数第3次输出结果4
同 Random 对象第3次输出结果4
无种子参数第4次输出结果1
同 Random 对象第4次输出结果8
无种子参数第5次输出结果7
同 Random 对象第5次输出结果6
无种子参数第6次输出结果8
同 Random 对象第6次输出结果4
无种子参数第7次输出结果8
同 Random 对象第7次输出结果2
无种子参数第8次输出结果7
同 Random 对象第8次输出结果8
无种子参数第9次输出结果0
同 Random 对象第9次输出结果1
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* Created by κ?? on 2017/7/30.
*/
public class Test {
static List<Integer> data = new ArrayList<>();
public static void main(String []args) {
Random rl = new Random();
int count = 100;
int all = 17000;
for (int i = 0; i < 100; i++) {
data.add(100);
}
int ran = rl.nextInt(100);
for (int i = 0; i < 17000; i++) {
boolean isBouns = false;
int bonus = 100;
for (int j = 0; j < 100; j++) {
if(data.get(j) == 0){
data.set(j,-1);
bonus--;
}elseif(data.get(j) != -1){
int value = data.get(j);
data.set(j,value-1);
}else{
bonus--;
}
}
if(data.get(ran)!=-1){
int value = data.get(ran);
data.set(ran,value+bonus);
isBouns = true;
}
ran = rl.nextInt(100);
if(!isBouns){
for (int j = 0; j < 100; j++) {
int value = data.get(j);
if(value!=-1){
data.set(j,value+1);
}
}
}
}
System.out.println(getData());
//数据详情
System.out.println(new Gson().toJson(data));
}
private static int getData() {
int result = 0;
int count = 0;
int winer = 0;
for (int i = 0; i < 100; i++) {
if(data.get(i) != -1 && data.get(i) != 0){
result+=data.get(i);
count++;
//绝对赢家
if(data.get(i)>100){
winer++;
}
}
}
System.out.println("共有"+winer+"人赢了!其中有"+count+"还有钱!");
//总资金 10000,检查这个值计算是否有计算出错
return result;
}
}