六合彩,模拟数据,帮我看看有木有错误

魏中火头兵 发布于 2013/03/12 16:22
阅读 666
收藏 0

模拟的是六合彩 抽奖数据,就是说49个数字里 选6个不重复的,然后和开奖的对比

产生两组 分别有六个数字的随机数,对比猜中了几个数字,

感觉中奖的几率有点大,还是我算错了。。。。

import java.io.FileWriter;
import java.io.IOException;


/**
 * 彩票抽奖 数据模拟
 * 
 * @author Ding
 * 
 */
public class Datascollection {
// 猜中号码个数总次数
static int gess0 = 0;
static int gess1 = 0;
static int gess2 = 0;
static int gess3 = 0;
static int gess4 = 0;
static int gess5 = 0;
static int gess6 = 0;


// static int num = 0;
// static int[] kjnum = new int[6];


public static void main(String[] args) {
// for (int i = 0; i < 1000; i++) {
new Datascollection().result();
// }
}


public static void result() {
// 开始模拟,一个选号,一个开奖号
for (int i = 0; i < 10000; i++) {
int[] arr = new Datascollection().newNum();
int[] arr1 = new Datascollection().newNum();
// new Datascollection().kjNum();
// String str = "";
// String str1 = "";
// System.out.println(str + str1);
// 对比两组号码,看看有几个数字相同
int str2 = new Datascollection().caiPiao(arr, arr1);
// for (int j = 0; j < arr1.length; j++) {
// // System.out.print(kjnum[j] + " ");
// // str = str + arr1[j] + " ";
// str = str2 + "";
// }
// 将数据写入文本
FileWriter fileWriter;
try {
fileWriter = new FileWriter("d:\\datas.txt", true);


// fileWriter.write(str + " " + str2);
fileWriter.write("" + str2);
if (str2 == 0) {
gess0++;
}
if (str2 == 1) {
gess1++;
}
if (str2 == 2) {
gess2++;
}
if (str2 == 3) {
gess3++;
}
if (str2 == 4) {
gess4++;
}
if (str2 == 5) {
gess5++;
}
if (str2 == 6) {
gess6++;
}
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println(str + "  " + " " + str2);


}
System.out.println("猜中0个数字 总共有" + gess0 + "次");
System.out.println("猜中1个数字 总共有" + gess1 + "次");
System.out.println("猜中2个数字 总共有" + gess2 + "次");
System.out.println("猜中3个数字 总共有" + gess3 + "次");
System.out.println("猜中4个数字 总共有" + gess4 + "次");
System.out.println("猜中5个数字 总共有" + gess5 + "次");
System.out.println("猜中6个数字 总共有" + gess6 + "次");


}


// 生成1到49的6个不同随机数;
private int[] newNum() {
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;
a = (int) (Math.random() * 49) + 1;
b = (int) (Math.random() * 49) + 1;
c = (int) (Math.random() * 49) + 1;
d = (int) (Math.random() * 49) + 1;
e = (int) (Math.random() * 49) + 1;
f = (int) (Math.random() * 49) + 1;
int[] kjnum = new int[] { a, b, c, d, e, f };


// for (int i = 0; i < kjnum.length; i++) {
// System.out.println(kjnum[i]);
// }
// System.out.println("排序后");
kjnum = new Datascollection().paixu(kjnum);
boolean flag = true;
// 判断生成的数字是否有重复,如有重复,重新生成
while (flag) {
for (int i = 0; i < kjnum.length - 1; i++) {
if (kjnum[i] == kjnum[i + 1]) {
newNum();
}
}
flag = false;
}
return kjnum;
}


/**
* 判断猜中了几个号码

* @param arr1
* @param kjnum1
* @return
*/


private int caiPiao(int[] arr1, int[] kjnum1) {
int rnum = 0;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 6; j++) {
if (arr1[i] == kjnum1[j]) {
rnum++;
}
}
}
// String str1 = "猜中了" + rnum + "个数";
return rnum;
// System.out.println(str1);
}


/**
* 对于选号排序(从小到大)

* @param arr1
* @return
*/
private int[] paixu(int[] arr1) {
for (int i = 0; i < arr1.length - 1; i++) {
for (int j = i + 1; j < arr1.length; j++) {
if (arr1[i] > arr1[j]) {
int temp = arr1[j];
arr1[j] = arr1[i];
arr1[i] = temp;
}
}
}
return arr1;


}
}

加载中
0
JavaOlder
JavaOlder
模拟的是六合彩 抽奖数据,就是说49个数字里 选6个不重复的,然后和开奖的对比

产生两组 分别有六个数字的随机数,对比猜中了几个数字,

你这个想法纠错了。不是49个数字里,选6个不重复的数字。

第一次是49个。第二次就是48个了。一次减少。

每个球出现的概率也是不同的。要分别算。

魏中火头兵
魏中火头兵
恩,似乎是个问题,我修改去试试
返回顶部
顶部