『壹』 java 演算法 雙色球
每一步都做成了一個單獨的方法來做,
所以稍顯復雜,不過注釋都寫了。
完成
1.產生7個隨機數
2.驗證是否存在相同隨機數
3.確定號碼選擇區域
4.排序
//package com.color.util;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class DoubleBall {
//用來保存產生的每注雙色球號碼
private List<int[]> ballList;
//保存一注號碼的數組
private int[] ball;
//紅色球號碼總和的開始區域
private int START;
//紅色球號碼總和的結束區域
private int END;
/**
* 構造方法
* @param number,產生號碼的數量
*/
public DoubleBall(){
Scanner s = new Scanner(System.in);
System.out.println("===請輸入產生隨機號碼數量===");
int number = s.nextInt();
this.init();
//完成ballList的初始化
ballList = new ArrayList<int[]>();
for(int i=0;i<number;i++){
//初始化ball
ball = new int[7];
//產生一注號碼
ball = this.createBall(ball);
while(true){
int count = 0;
//將所有的號碼去掉最後一個號碼後相加,用來驗證是否在指定的區域內
for(int j=0;j<ball.length-1;j++){
count += ball[j];
}
//如果產生的號碼不在指定的區域內,重新產生號碼
if(!(count>START && count <END)){
ball = this.createBall(ball);
//否則,退出while,將ball添加到list之中
}else{
break;
}
}
ball = this.sort(ball);
//將這注產生的號碼添加到list之中
ballList.add(ball);
}
}
/**
* 產生雙色球的七個號碼
* @param ball
* @return
*/
public int[] createBall(int[] ball){
for(int i=0;i<ball.length;i++){
//默認最後一個號碼保留給藍色球
if(i<ball.length-1){
//如果是紅色球,則驗證每個產生的號碼是否已經存在。
ball = this.validateBall(ball,i);
}else{
//如果是藍色球,直接產生1--16之間的隨機數
ball[i] = (int) Math.round(Math.random()*15+1);
}
}
//產生號碼完畢,返回這注產生的號碼。
return ball;
}
/**
* 每次只產生一個紅色號碼,並驗證此號碼是否已經存在,
* 如果存在,重新產生號碼,只到沒有重復號碼。
* @param ball
* @param index 產生紅色球數組的下標,即第幾個號碼。
* @return
*/
public int[] validateBall(int[] ball,int index){
//產生一個1--33的隨機數
int random = (int) Math.round(Math.random()*32+1);
while(true){
int i=0;
for(;i<index;i++){
//如果存在重復數字
if(random==ball[i]){
//重新產生號碼
random = (int) Math.round(Math.random()*32+1);
//並且跳出for循環,進入while循環
i =index+1;
}
}
//如果驗證完了所有號碼,那把這個號碼插入數組,並返回
if(i==index){
ball[index] = random;
return ball;
}
}
}
/**
* 顯示產生的雙色球號碼
*
*/
public void displayBall(){
System.out.println("====產生號碼的詳細信息如下===");
for(int[] ball:ballList){
for(int i=0;i<ball.length;i++){
//如果號碼不足兩位數,在前面添加"0"顯示。
System.out.print(((ball[i]<10)?("0"+ball[i]):ball[i])+"\t");
}
System.out.println();
}
}
/**
* 完成初始化,制定雙色球號碼的
* 開始和結束區域
*
*/
public void init(){
Scanner s = new Scanner(System.in);
System.out.println("===請輸入開始數字===");
this.START = s.nextInt();
System.out.println("===請輸入結束數字===");
this.END = s.nextInt();
if(this.START<=25 || this.END>=150){
System.out.println("輸入數字不合法,退出程序!");
System.exit(0);
}
}
/**
* 對號碼進行排序,只對最後一個號碼以前的
* 號碼進行排序
* @param ball
* @return
*/
private int[] sort(int[] ball){
for(int i=0;i<ball.length-1;i++){
for(int j=0;j<ball.length-i-2;j++){
if(ball[j]>ball[j+1]){
int t = ball[j];
ball[j] = ball[j+1];
ball[j+1] = t;
}
}
}
return ball;
}
public static void main(String[] args){
DoubleBall ball = new DoubleBall();
ball.displayBall();
}
}
『貳』 java程序編寫雙色球代碼
截圖:
publicclassTest1{
publicstaticvoidmain(String[]arg){
Test1localTest1=newTest1();
//雙色球:紅色球號碼+藍色球號碼
//六個紅色球和一個藍色球號碼
//紅色球號碼從1~33中選擇
//藍色球號碼從1~16中選擇
//一等獎:七個號碼相符(六個紅色號碼和一個藍色球號碼)(紅色球號碼順序不限,下同)
//二等獎:六個紅色球號碼相符;
//三等獎:五個紅色球號碼,或者四個紅色球號碼和一個藍色球號碼相符;
//四等獎:五個紅色球號碼,或者三個紅色球號碼和一個藍色球號碼相符;
//五等獎:四個紅色球號碼,或者三個紅色球號碼和一個藍色球號碼相符;
//六等獎:一個藍色球號碼相符(有誤紅色球號碼相符均可);
//例如:紅色球號碼010613192428藍色球號碼16
System.out.println("開始出獎");
//定義雙色球數組,大小為7
String[]values=newString[7];
for(inti=0;i<7;i++){
if(i==6){
intblueValue=localTest1.randomOneBlueValue();
if(blueValue<10){
values[i]="0"+blueValue;
}else{
values[i]=String.valueOf(blueValue);
}
}else{
intredValue=localTest1.randomOneRedValue();
if(redValue<10){
values[i]="0"+redValue;
}else{
values[i]=String.valueOf(redValue);
}
}
}
System.out.println();
System.out.println("出獎結束");
System.out.println();
System.out.print("雙色球開獎號碼:");
//列印雙色球號碼
for(Stringvalue:values){
System.out.print(""+value);
}
}
}
『叄』 用java編寫一個輔助雙色球選號的系統,紅球從1~33中隨機選出6個數,藍球從1~16中隨機選出1個數,且紅球的
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 實現隨機抽取,例如35選7等
*
* @author Administrator
*
*/
public class RandomSelect {
public static int[] randomSelect(int total, int number) {
int[] result = new int[number];
List<String> list = new ArrayList<String>();
Random r = new Random();
for (int i = 0; i < total; i++) {
list.add(i + 1 + "");
}
for (int j = 0; j < number; j++) {
int size = list.size();
String s = list.get(r.nextInt(size));
result[j] = Integer.parseInt(s);
list.remove(s);
}
return result;
}
public static void main(String[] args) {
int[] red = randomSelect(33, 6);
int[] blue = randomSelect(16, 1);
System.out.println("紅球是:");
for (int i = 0; i < red.length; i++) {
System.out.print(red[i] + "\t");
}
System.out.println("\n藍球是:");
for (int i = 0; i < blue.length; i++) {
System.out.println(blue[i] + "\t");
}
}
}
『肆』 用JAVA編寫一個福利彩票機選模擬器,使用隨機數方法
自己寫的,不懂可以問我
import java.util.Random;
import java.awt.*;
import java.awt.event.*;
public class shuangSeQiu implements ActionListener{
int i,k;
static int rm,rr;
int [] a = new int [33];
Frame f = new Frame("雙色球隨機數");
TextField tf = new TextField();
Random rd = new Random();
public shuangSeQiu()
{
for(i=0;i<33;i++)
{
a[i] = i;
}
f.setLayout(new BorderLayout());
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void init()
{
tf.addActionListener(this);
Button b = new Button("開始");
b.addActionListener(this);
f.add(tf,"North");
f.add(b);
f.setSize(300,300);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("開始"))
//tf.setText(""+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" 藍色球號碼:"+(rd.nextInt(15)+1));
{
/*rr = new Random().nextInt(33);
rm = new Random().nextInt(33);*/
for(i=0;i<33;i++)
{
rr = new Random().nextInt(33);
rm = new Random().nextInt(33);
System.out.print(rr+" ");
k=a[rm];
a[rm]=a[rr];
a[rr]=k;
}
tf.setText("紅色球號碼:"+(a[0]+1)+" "+(a[1]+1)+" "+(a[2]+1)+" "+(a[3]+1)+" "+(a[4]+1)+" "+(a[5]+1)+" 藍色球號碼:"+(rd.nextInt(15)+1));
}
}
public static void main(String[] args)//throws Exception
{
new shuangSeQiu().init();
}
}
『伍』 Java模擬生成雙色球
public void main (String[] args){
int[] red=new int[7];
int blue=0;
for(int i=0;i<7;i=i+1){
red[i]=getRandom(33);
//判斷重復
while(true){
boolean needcheck=false;
for(int k=0;k<i;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;}
}
//判斷重復結束
}
//紅球賦值結束
blue=getRandom(16);
System.out.println("生成的紅球為:"+ red[0]+red[1]+red[2]+red[3]+red[4]+red[5]+red[6]);
System.out.println("生成的藍球為:"+ );
}
public int getRandom(int Max){
return Math.floor(Math.random()*33)+1;
}