『壹』 關於java演算法編程的 做一個小游戲,電腦隨機生成三個骰子(每個骰子點數為1~6),將這三個數相加。
1 設計一個int數組!長度為3.
2 設計3個變數!a, b, c. 分別取值為1-6.int a= new Random(6)+1.重復b, c.
3 把a, b, c放入數組中!
4 循環遍歷數組把三內個元素相容加 輸出這把總和是
5 判斷總和能否被2整除,如果能,輸出是雙數,不能輸出是單數!
6 判斷大小 大於等於4&&小於等於10 顯示開小
大於等於11&&小於等於17顯示開大
7 遍歷數組 判斷三個元素是否相等 相等顯示開豹子。。
手機打字!!有什麼問題在問吧
『貳』 JAVA抽獎的演算法
優先順序規則使高等獎盡量在後期抽出
importjava.util.LinkedList;
importjava.util.List;
publicclassGetGift{
//獎品倉庫
privateList<Gift>gifts=newLinkedList<Gift>();
publicGetGift(){
//生成一堆獎品放進獎品倉庫
//一等獎一個優先順序1,二等獎兩個優先順序2。。。20等獎20個優先順序20
for(inti=1;i<=20;i++){
GiftTypegt=newGiftType(i+"等獎",i,i);
for(intj=1;j<=i;j++){
gifts.add(newGift(i+"等獎——第"+j+"號",gt));
}
}
}
//抽獎
publicsynchronizedGift穗凳蠢getGift(){
intrandomNumber=(int)(Math.random()*total());
intpriority=0;
for(Giftg:gifts){
priority+=g.getType().getPriority();
if(priority>=randomNumber){
//從獎品庫移出獎品
gifts.remove(g);
returng;
}
}
//抽獎次數多於獎品時,沒有獎品
returnnull;
}
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
GetGiftgg=newGetGift();
//一共生成210個獎品,抽210次,多抽顯示null
for(inti=0;i<猜陪210;i++){
System.out.println(gg.getGift());
}
}
//計算總優先順序,內部使用
privateinttotal(){
intresult=0;
for(Giftg:gifts){
result+=g.getType().getPriority();
}
returnresult;
}
}
//記錄獎品的信息
//如1等獎共1個,優先順序為1最難抽
classGiftType{
//名字(如1等獎)
privateStringname;
//這種獎品的數量,數量越大越容易抽到
privateintquantity;
//這種獎品的優先粗伍級,最小為1,數越大越容易抽到
privateintpriority;
publicGiftType(Stringname,intquantity,intpriority){
this.name=name;
this.quantity=quantity;
this.priority=priority;
}
publicintgetPriority(){
returnpriority;
}
@Override
publicStringtoString(){
return"GiftType[name="+name+",quantity="+quantity+",priority="+priority+"]";
}
}
//獎品
classGift{
//每個獎品有唯一id,抽獎不會重復,格式為"16等獎——第8號"
privateStringid;
//這個獎品的類別
privateGiftTypetype;
publicGift(Stringid,GiftTypetype){
this.id=id;
this.type=type;
}
publicGiftTypegetType(){
returntype;
}
@Override
publicStringtoString(){
return"Gift[id="+id+",type="+type+"]";
}
}
『叄』 java實現以下演算法:有6個數組a,b,c,d,e,f,從每個數組中取出一個數值,按順序放進指定的數組q中,
package Bai_17;
public class NumberSort {
public static void sort(int[][] root, int[] number){
int[] result = new int[number.length];
for(int i =0;i<number.length;i++){
result[i] = root[i][number[i]];
}
for(int i =0;i<result.length;i++){
for(int j= i;j<result.length-1;j++){
if(result[j]>result[j+1]){
int tmp = result[j];
result[j]=result[j+1];
result[j+1]=result[j];
}
}
}
for(int i=0;i<result.length;i++){
System.out.print(result[i]);
}
}
public static void main(String args[]){
int myvalue[][] = new int[6][6];
int[] number = {5,4,3,2,1,0};
//int count =0;
for(int i =0;i<myvalue.length*myvalue[0].length;i++){
//myvalue[0] = {1,2,3,4,5,6};
myvalue[i/6][i%6]=i;
}
sort(myvalue,number);
}
}
基本的思路。。不過還要debug。。裡面的myvalue[][] 定義了你的六個數組。
然後number[]對應的就是從myvalue裡面index來取值。這程序是從第一個數組裡面的第5個,第二個數組的第四個。。。。取出來之後排序。列印
如果不會debug的話,要等以後了。。
『肆』 求java演算法:根據物品的數量來確定抽獎的概率(當物品數量為0時無論如何都不可能選到)
public class Lottery {
private int m = 1000;//發放獎券的數量
private int n = 2;//獎品的數量
public boolean getLottery(){
boolean isLottery = false;
double d = (double)n/(double)m;//中獎概率
double r = Math.random();//0~1之間的隨機數,包括0
if(r<d){//如果隨版機數小於權概率 那麼中獎
n--;//獎品數量-1
isLottery = true;
}
m--;//獎券數量-1
return isLottery;
}
}
『伍』 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雙色球排列組合演算法 - 根據復式列出所有單式號碼
你這不就是6個數字隨機的排序問題么
1-6的排序打出來+2個籃球
排序:6^5^4^3^2^1 * 2 種
for循環多重嵌套。
位置變1,從上到下循環一邊。
你還是自己嵌套吧,我發現如果寫主代碼的話也要寫幾十行。