import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/**
* 要求:<br/>
* 1 每次取一个,共取4次,4次组成一个4位数,拼起来为Set中的数<br/>
* 2 每次取数,Set中的每个数都有相同的机会
*/
public class LuckyGetter {
private static long start = 0;
private static long end = 0;
public Set<Integer> set = new HashSet<Integer>();
// public static void main(String[] args) {
// // 初始化Set
// LuckyGetter getter = new LuckyGetter();
// getter.initSet(getter.set);
// // 取数
// System.out.println(getter.getRandom());
// }
public int getRandom() {
int num = 0;
for (int i = 0; i < 4; i++) {
num = getNext(num);
}
return num;
}
public int getNext(int num) {
if (num < 0 || num > 9999) {
return 0;
}
int nextNum = 0;
// 请把您的代码填写在这里
return nextNum;
}
public void initSet(Set<Integer> set) {
set.add(1235);
set.add(1236);
set.add(1245);
set.add(1248);
set.add(1366);
set.add(1369);
set.add(1382);
set.add(1384);
set.add(2235);
set.add(2236);
set.add(2245);
set.add(2248);
set.add(2366);
set.add(2369);
set.add(2382);
set.add(2384);
set.add(8514);
}
public static void main(String[] args) {
start = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
System.out.println(test());
}
end = System.currentTimeMillis();
System.out.println(end - start);
}
@SuppressWarnings("unchecked")
public static Integer test() {
LuckyGetter lg = new LuckyGetter();
Integer qian;
Integer bai;
Integer shi;
Integer ge;
lg.initSet(lg.set);
qian = getNumber(lg.set, 1000);
Set<Integer> set2 = getSet(lg.set, 1000, qian);
bai = getNumber(set2, 100);
Set<Integer> set3 = getSet(set2, 100, bai);
shi = getNumber(set3, 10);
Set<Integer> set4 = getSet(set3, 10, shi);
ge = getNumber(set4, 1);
Integer number5 = qian * 1000 + bai * 100 + shi * 10 + ge;
return number5;
}
@SuppressWarnings( { "unchecked" })
private static Set getSet(Set<Integer> set, int i, int number2) {
Set<Integer> set2 = new HashSet<Integer>();
Iterator it2 = set.iterator();
while (it2.hasNext()) {
Integer number = (Integer) it2.next();
if (number2 == number / i) {
set2.add(number % i);
}
}
return set2;
}
@SuppressWarnings("unchecked")
private static Integer getNumber(Set<Integer> set, int i) {
double num0 = 0;
double num1 = 0;
double num2 = 0;
double num3 = 0;
double num4 = 0;
double num5 = 0;
double num6 = 0;
double num7 = 0;
double num8 = 0;
double num9 = 0;
Iterator it = set.iterator();
while (it.hasNext()) {
Integer number = (Integer) it.next();
number = number / i;
if (number == 1) {
num1++;
} else if (number == 2) {
num2++;
} else if (number == 3) {
num3++;
} else if (number == 4) {
num4++;
} else if (number == 5) {
num5++;
} else if (number == 6) {
num6++;
} else if (number == 7) {
num7++;
} else if (number == 8) {
num8++;
} else if (number == 9) {
num9++;
} else {
num0++;
}
}
if (set.size() > 0) {
num0 = num0 / set.size();
num1 = num1 / set.size();
num2 = num2 / set.size();
num3 = num3 / set.size();
num4 = num4 / set.size();
num5 = num5 / set.size();
num6 = num6 / set.size();
num7 = num7 / set.size();
num8 = num8 / set.size();
num9 = num9 / set.size();
}
double randomNumber = Math.random();
if (randomNumber >= 0 && randomNumber <= num1) {
return 1;
} else if (randomNumber >= num1 && randomNumber <= num1 + num2) {
return 2;
} else if (randomNumber >= num1 + num2 && randomNumber <= num1 + num2 + num3) {
return 3;
} else if (randomNumber >= num1 + num2 + num3 && randomNumber <= num1 + num2 + num3 + num4) {
return 4;
} else if (randomNumber >= num1 + num2 + num3 + num4 && randomNumber <= num1 + num2 + num3 + num4 + num5) {
return 5;
} else if (randomNumber >= num1 + num2 + num3 + num4 + num5 && randomNumber <= num1 + num2 + num3 + num4 + num5 + num6) {
return 6;
} else if (randomNumber >= num1 + num2 + num3 + num4 + num5 + num6 && randomNumber <= num1 + num2 + num3 + num4 + num5 + num6 + num7) {
return 7;
} else if (randomNumber >= num1 + num2 + num3 + num4 + num5 + num6 + num7 && randomNumber <= num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8) {
return 8;
} else if (randomNumber >= num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8
&& randomNumber <= num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8 + num9) {
return 9;
} else {
return 0;
}
}
}
import java.util.Iterator;
import java.util.Set;
/**
* 要求:<br/>
* 1 每次取一个,共取4次,4次组成一个4位数,拼起来为Set中的数<br/>
* 2 每次取数,Set中的每个数都有相同的机会
*/
public class LuckyGetter {
private static long start = 0;
private static long end = 0;
public Set<Integer> set = new HashSet<Integer>();
// public static void main(String[] args) {
// // 初始化Set
// LuckyGetter getter = new LuckyGetter();
// getter.initSet(getter.set);
// // 取数
// System.out.println(getter.getRandom());
// }
public int getRandom() {
int num = 0;
for (int i = 0; i < 4; i++) {
num = getNext(num);
}
return num;
}
public int getNext(int num) {
if (num < 0 || num > 9999) {
return 0;
}
int nextNum = 0;
// 请把您的代码填写在这里
return nextNum;
}
public void initSet(Set<Integer> set) {
set.add(1235);
set.add(1236);
set.add(1245);
set.add(1248);
set.add(1366);
set.add(1369);
set.add(1382);
set.add(1384);
set.add(2235);
set.add(2236);
set.add(2245);
set.add(2248);
set.add(2366);
set.add(2369);
set.add(2382);
set.add(2384);
set.add(8514);
}
public static void main(String[] args) {
start = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
System.out.println(test());
}
end = System.currentTimeMillis();
System.out.println(end - start);
}
@SuppressWarnings("unchecked")
public static Integer test() {
LuckyGetter lg = new LuckyGetter();
Integer qian;
Integer bai;
Integer shi;
Integer ge;
lg.initSet(lg.set);
qian = getNumber(lg.set, 1000);
Set<Integer> set2 = getSet(lg.set, 1000, qian);
bai = getNumber(set2, 100);
Set<Integer> set3 = getSet(set2, 100, bai);
shi = getNumber(set3, 10);
Set<Integer> set4 = getSet(set3, 10, shi);
ge = getNumber(set4, 1);
Integer number5 = qian * 1000 + bai * 100 + shi * 10 + ge;
return number5;
}
@SuppressWarnings( { "unchecked" })
private static Set getSet(Set<Integer> set, int i, int number2) {
Set<Integer> set2 = new HashSet<Integer>();
Iterator it2 = set.iterator();
while (it2.hasNext()) {
Integer number = (Integer) it2.next();
if (number2 == number / i) {
set2.add(number % i);
}
}
return set2;
}
@SuppressWarnings("unchecked")
private static Integer getNumber(Set<Integer> set, int i) {
double num0 = 0;
double num1 = 0;
double num2 = 0;
double num3 = 0;
double num4 = 0;
double num5 = 0;
double num6 = 0;
double num7 = 0;
double num8 = 0;
double num9 = 0;
Iterator it = set.iterator();
while (it.hasNext()) {
Integer number = (Integer) it.next();
number = number / i;
if (number == 1) {
num1++;
} else if (number == 2) {
num2++;
} else if (number == 3) {
num3++;
} else if (number == 4) {
num4++;
} else if (number == 5) {
num5++;
} else if (number == 6) {
num6++;
} else if (number == 7) {
num7++;
} else if (number == 8) {
num8++;
} else if (number == 9) {
num9++;
} else {
num0++;
}
}
if (set.size() > 0) {
num0 = num0 / set.size();
num1 = num1 / set.size();
num2 = num2 / set.size();
num3 = num3 / set.size();
num4 = num4 / set.size();
num5 = num5 / set.size();
num6 = num6 / set.size();
num7 = num7 / set.size();
num8 = num8 / set.size();
num9 = num9 / set.size();
}
double randomNumber = Math.random();
if (randomNumber >= 0 && randomNumber <= num1) {
return 1;
} else if (randomNumber >= num1 && randomNumber <= num1 + num2) {
return 2;
} else if (randomNumber >= num1 + num2 && randomNumber <= num1 + num2 + num3) {
return 3;
} else if (randomNumber >= num1 + num2 + num3 && randomNumber <= num1 + num2 + num3 + num4) {
return 4;
} else if (randomNumber >= num1 + num2 + num3 + num4 && randomNumber <= num1 + num2 + num3 + num4 + num5) {
return 5;
} else if (randomNumber >= num1 + num2 + num3 + num4 + num5 && randomNumber <= num1 + num2 + num3 + num4 + num5 + num6) {
return 6;
} else if (randomNumber >= num1 + num2 + num3 + num4 + num5 + num6 && randomNumber <= num1 + num2 + num3 + num4 + num5 + num6 + num7) {
return 7;
} else if (randomNumber >= num1 + num2 + num3 + num4 + num5 + num6 + num7 && randomNumber <= num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8) {
return 8;
} else if (randomNumber >= num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8
&& randomNumber <= num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8 + num9) {
return 9;
} else {
return 0;
}
}
}
本文介绍了一个幸运数字生成器的设计与实现。该程序通过从预设的数字集合中随机选取四位数字来生成幸运号码,确保每次抽取都有相同的概率,并且能够高效地完成任务。

707

被折叠的 条评论
为什么被折叠?



