我能理解你的思路,但做法有點(diǎn)小問題,這種做法就注定了不好判斷是否重復(fù),給你提供一種更好的思路
創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷,提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營(yíng)銷、微信小程序、公眾號(hào)商城、等建站開發(fā),創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。
public?static?void?main(String[]?args)?{
int?a[]=new?int?[6];
int?b=(int)(Math.random()*15+1);
// abcd:
// while(true){
// for(int?i=0;ia.length;i++){
// ????a[i]=(int)(Math.random()*35+1);//這里不要直接把隨機(jī)出來的數(shù)放進(jìn)數(shù)組,沒法判斷
// }
// for(int?i=0;ia.length-1;i++){ //你是想在這里循環(huán)判斷是否重復(fù)吧,思路是對(duì)的,
// //但過程太亂讀不明白了,a.length為什么要-1
// for(int?j=0;ja.length-1;j++){
// System.out.println(i);
// System.out.println(j);
// if(a[i]!=a[j]i!=jia.length){
// //問題在這,第一次循環(huán)i=0,j=0,沒有問題
// //第二次循環(huán)i還=0,j=1了,那i肯定是不等j,所以必然break,根本沒法判斷
// System.out.println("----"?+?j);
// break?abcd;
// }
// }
// }
// }
//下面是我給你提供的方法
int[]?balls?=?new?int[35];//創(chuàng)建一個(gè)有35個(gè)長(zhǎng)度的數(shù)組作為選球池
for(int?i=0;iballs.length;i++){
balls[i]?=?i?+?1;?//循環(huán)放入1至35
}
boolean[]?used?=?new?boolean[balls.length];//創(chuàng)建一個(gè)boolean數(shù)組,用于記錄是否重復(fù)
//長(zhǎng)度和球池等長(zhǎng)
for(int?i?=?0;ia.length;i++){//循環(huán)向a數(shù)組中放入元素
for(;;){
int?index?=?(int)(Math.random()*35);//生成一個(gè)隨機(jī)數(shù),這里不再+1了,因?yàn)殡S機(jī)的是下標(biāo),+1會(huì)出現(xiàn)越界
if(used[index]==true){?//如果used中,index的位置為true,則表示已經(jīng)被隨機(jī)過了
continue;//如果已經(jīng)被隨機(jī)過,則重新循環(huán)生成隨機(jī)數(shù)
}
a[i]?=?balls[index];//如果沒有被隨機(jī)過,則將index所對(duì)應(yīng)位置的元素放入a數(shù)組中
used[index]?=?true;//同時(shí)將該index位置設(shè)置為true,表示已經(jīng)被隨機(jī)過了
break;//退出當(dāng)前循環(huán),繼續(xù)下一次向a中添加元素
}
}
for(int?i=0;ia.length;i++){
for(int?j=0;ja.length-1-i;j++){
if(a[j]a[j+1]){
int?t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
// for(int?i=0;ia.length;i++){
// System.out.println(a[i]);
// }//輸出數(shù)組不需要這么麻煩
System.out.println(Arrays.toString(a));
System.out.println("藍(lán)色球?yàn)?+b);
}
public void main (String[] args){
int[] red=new int[7];
int blue=0;
for(int i=0;i7;i=i+1){
red[i]=getRandom(33);
//判斷重復(fù)
while(true){
boolean needcheck=false;
for(int k=0;ki;k=k+1) { if(red[i]==red[k]){ needcheck=true; }}
if(needcheck){red[i]=red[i]+1; if(red[i]==34){red[i]=1}}else{break;}
}
//判斷重復(fù)結(jié)束
}
//紅球賦值結(jié)束
blue=getRandom(16);
System.out.println("生成的紅球?yàn)椋?+ red[0]+red[1]+red[2]+red[3]+red[4]+red[5]+red[6]);
System.out.println("生成的藍(lán)球?yàn)椋?+ );
}
public int getRandom(int Max){
return Math.floor(Math.random()*33)+1;
}
截圖:
選取紅色球號(hào)碼方法:
/**
?*?隨機(jī)選取紅色球
?*?
?*?獲取1~33其中一個(gè)數(shù)
?*?
?*?0?=?Math.random??1
?*/
private?int?randomOneRedValue()?{
int?randomValue?=?(int)?(Math.random()?*?33?+?1);
return?randomValue;
}
選取藍(lán)色球號(hào)碼方法:
/**
?*?隨機(jī)選取藍(lán)色球號(hào)碼
?*?
?*?獲取1~16的數(shù)值
?*?
?*?@return
?*/
private?int?randomOneBlueValue()?{
int?randomValue?=?(int)?(Math.random()?*?15?+?1);
return?randomValue;
}
測(cè)試:
public?class?Test1?{
public?static?void?main(String[]?arg)?{
Test1?localTest1?=?new?Test1();
//?雙色球?:紅色球號(hào)碼?+?藍(lán)色球號(hào)碼
//?六個(gè)紅色球和一個(gè)藍(lán)色球號(hào)碼
//?紅色球號(hào)碼從1~33中選擇
//?藍(lán)色球號(hào)碼從1~16中選擇
//?一等獎(jiǎng):七個(gè)號(hào)碼相符(六個(gè)紅色號(hào)碼和一個(gè)藍(lán)色球號(hào)碼)(紅色球號(hào)碼順序不限,下同)
//?二等獎(jiǎng):六個(gè)紅色球號(hào)碼相符;
//?三等獎(jiǎng):五個(gè)紅色球號(hào)碼,或者四個(gè)紅色球號(hào)碼和一個(gè)藍(lán)色球號(hào)碼相符;
//?四等獎(jiǎng):五個(gè)紅色球號(hào)碼,或者三個(gè)紅色球號(hào)碼和一個(gè)藍(lán)色球號(hào)碼相符;
//?五等獎(jiǎng):四個(gè)紅色球號(hào)碼,或者三個(gè)紅色球號(hào)碼和一個(gè)藍(lán)色球號(hào)碼相符;
//?六等獎(jiǎng):一個(gè)藍(lán)色球號(hào)碼相符(有誤紅色球號(hào)碼相符均可);
//?例如:紅色球號(hào)碼?01?06?13?19?24?28?藍(lán)色球號(hào)碼?16
System.out.println("開始出獎(jiǎng)");
//?定義雙色球數(shù)組,大小為7
String[]?values?=?new?String[7];
for?(int?i?=?0;?i??7;?i++)?{
if?(i?==?6)?{
int?blueValue?=?localTest1.randomOneBlueValue();
if?(blueValue??10)?{
values[i]?=?"0"?+?blueValue;
}?else?{
values[i]?=?String.valueOf(blueValue);
}
}?else?{
int?redValue?=?localTest1.randomOneRedValue();
if?(redValue??10)?{
values[i]?=?"0"?+?redValue;
}?else?{
values[i]?=?String.valueOf(redValue);
}
}
}
System.out.println();
System.out.println("出獎(jiǎng)結(jié)束");
System.out.println();
System.out.print("雙色球開獎(jiǎng)號(hào)碼:");
//?打印雙色球號(hào)碼
for?(String?value?:?values)?{
System.out.print("?"?+?value);
}
}
}
public class sedasd {
static Random random = new Random();
public static void main(String[] args) {
System.out.println(Arrays.toString(getStor(getRed())));/*getRed()得到存儲(chǔ)取出的號(hào)碼的數(shù)組ns
getStor()對(duì)數(shù)組的輸出格式進(jìn)行格式化
*/
}
public static int[] getRed() {
int[] num = new int[33];
int[] ns = new int[6];
int index = 0;
for (int i = 0; i 100; i++) {
int temp = random.nextInt(33);
if (num[temp] == 0) { //判斷取出的號(hào)碼是不是第一次取出
ns[index] = temp + 1; //random.nextInt(33)是從零到32所以要加1
num[temp] = 1;
index++;
}
if (!(ns[5] == 0)) { //判斷是不是取6個(gè)號(hào)碼
return ns;
}
}
return ns;
}
public static String[] getStor(int[] s) {
String[] ns = new String[6];
Arrays.sort(s);
for (int i = 0; i s.length; i++) {
if (s[i] 10) {
ns[i] = "0" + s[i];
} else {
ns[i] = "" + s[i];
}
}
return ns;
}
}
希望可以幫到你,要是還不理解可以在問我。。。
新聞名稱:雙色球代碼java 雙色球java程序代碼出現(xiàn)概率
標(biāo)題路徑:http://vcdvsql.cn/article16/ddojogg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、云服務(wù)器、營(yíng)銷型網(wǎng)站建設(shè)、品牌網(wǎng)站制作、商城網(wǎng)站、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)