本文目錄一覽:
- 1、JAVA抽獎問題
- 2、求一份抽獎遊戲(Java寫的代碼)
- 3、Java代碼實現抽獎:從班級的學號中抽出一個一等獎,兩個二等獎,三個三等獎
- 4、用java寫一個抽獎程序
- 5、通過java 實現 模擬抽獎
- 6、JAVA抽獎的算法
JAVA抽獎問題
import java.util.Scanner;public class TextRandom {
public static Scanner input=new Scanner(System.in);
public static int count=0;//記錄用戶猜對的次數
public static int xitong =(int)Math.round(Math.random()*10);//系統產生的隨機數0~10之間
public static int w[]=new int[3];//將系統隨即產生的數字放在數組W中
public static int guess[]=new int [3];
public static void main(String[]args)
{
guess();
}
public static void guess()
{ //開始抽獎
for(int j=0;jw.length;j++){
System.out.println(“開始抽獎,請用戶輸入0~10之間的數字,請輸入第”+(j+1)+”個數字”);
guess[j] =input.nextInt();
if(j2){
System.out.println(“正在搖獎,需要中途放棄么 ?(y/n)”);
String shuru =input.next();
if(shuru.equals(‘y’)) break;
}
}
//系通開出的獎
System.out.println(“系統產生三個數字是:”);
for(int i=0;i3;i++)
{
System.out.print((int)Math.round(Math.random()*10));
w[i]=(int)Math.round(Math.random()*10);
}
//兌獎過程
for(int i=0;i3;i++)
{
if(guess[i]==w[i])
{
count++;//記錄出用戶抽中獎的次數
}
}
if(count==3)
{
System.out.println(“恭喜你,你中獎了 “);
}
else
{
System.out.println(“很遺憾,您沒有中獎,歡迎下次再來!”);
}
}
}
//我已儘力了
求一份抽獎遊戲(Java寫的代碼)
import java.util.Scanner;
/**
*
*/
public class f {
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
System.out.print(“請輸入抽獎號碼上限:”);
int max = scan.nextInt();
System.out.print(“請輸入抽獎次數:”);
int n = scan.nextInt();
System.out.print(“中獎號碼依次為:”);
for(int i=0;in;i++){
System.out.print((int)(Math.random()*max+1)+” “);
}
}
}
Java代碼實現抽獎:從班級的學號中抽出一個一等獎,兩個二等獎,三個三等獎
抽取問題, 重點是 同一個學號不能重複被抽取.
解決辦法很多,
比如數組可以使用下標來標記,號碼是否被使用,使用了就繼續下一次抽取
也可以使用集合來抽取,把集合順序打亂,然後隨便抽幾個就可以了
參考代碼:數組法
import java.util.Random;
public class Test {
public static void main(String[] args) {
int stuNums=30;
int[] nums=new int[stuNums];//存儲學號的數組
boolean[] flags=new boolean[stuNums];//標記,用於標記對應下標的學號是否已經被抽取過了
for (int i = 0; i stuNums; i++) {
nums[i]=i+1;//給學號賦值
}
Random r=new Random();
while(true){
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println(“A等:”+nums[index]);
flags[index]=true; //標記已經被使用過了
break;
}
}
for (int i = 0; i 2; i++) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println(“B等:”+nums[index]);
flags[index]=true;
}else{
i–;//如果已經被抽取過了 ,那麼i建議,再次循環
}
}
for (int i = 0; i 3; i++) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println(“c等:”+nums[index]);
flags[index]=true;
}else{
i–;
}
}
}
}
集合法
import java.util.ArrayList;
import java.util.Collections;
public class Test2 {
public static void main(String[] args) {
int stuNums=20;
ArrayListInteger list=new ArrayListInteger();
for (int i = 0; i stuNums; i++) {
list.add(i+1);
}
System.out.println(“有序”+list);
Collections.shuffle(list);//打亂順序
System.out.println(“亂序”+list);
System.out.println(“A等”+list.get(0));
System.out.println(“B等”+list.get(1));
System.out.println(“B等”+list.get(2));
System.out.println(“C等”+list.get(3));
System.out.println(“C等”+list.get(4));
System.out.println(“C等”+list.get(5));
}
}
用java寫一個抽獎程序
你是要JAVA可視化的 還是控制台的啊?
控制台的話 你可以用循環來取中獎號,將其存入list或set里(最好是set,因為set本來就不會重複)。如果用list存就另外寫一個循環方法,來挨個判定該元素是不是已經在list中存在了,如果存在,就讓選號的再加選一次,如果不重複,就放到list里去。。。。OK
通過java 實現 模擬抽獎
import java.util.Scanner;
public class Choujiang {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//定義Scanner類1234
System.out.println(“請輸入四位卡號:”);//輸入提示語
int cardNo = sc.nextInt();//接受輸入數據
int gewei = cardNo%10;//分解個位
int shiwei = cardNo/10%10;//分解十位
int baiwei = cardNo/100%10;//分解百位
int qianwei = cardNo/1000;//分解千位
int sum = gewei+shiwei+baiwei+qianwei;
System.out.println(“會員卡號四位之和是:”+sum);
if(sum20){//判斷各位數和是否大於20
System.out.println(“恭喜,你是幸運客戶!”);
}else{
System.out.println(“謝謝惠顧!”);
}
}
}
JAVA抽獎的算法
優先級規則使高等獎盡量在後期抽出
import java.util.LinkedList;
import java.util.List;
public class GetGift {
// 獎品倉庫
private ListGift gifts = new LinkedListGift();
public GetGift() {
// 生成一堆獎品放進獎品倉庫
// 一等獎一個優先級1,二等獎兩個優先級2。。。20等獎20個優先級20
for (int i = 1; i = 20; i++) {
GiftType gt = new GiftType(i + “等獎”, i, i);
for (int j = 1; j = i; j++) {
gifts.add(new Gift(i + “等獎——第” + j + “號”, gt));
}
}
}
// 抽獎
public synchronized Gift getGift() {
int randomNumber = (int) (Math.random() * total());
int priority = 0;
for (Gift g : gifts) {
priority += g.getType().getPriority();
if (priority = randomNumber) {
// 從獎品庫移出獎品
gifts.remove(g);
return g;
}
}
// 抽獎次數多於獎品時,沒有獎品
return null;
}
/**
* @param args
*/
public static void main(String[] args) {
GetGift gg = new GetGift();
// 一共生成210個獎品,抽210次,多抽顯示null
for (int i = 0; i 210; i++) {
System.out.println(gg.getGift());
}
}
// 計算總優先級,內部使用
private int total() {
int result = 0;
for (Gift g : gifts) {
result += g.getType().getPriority();
}
return result;
}
}
// 記錄獎品的信息
// 如1等獎共1個,優先級為1最難抽
class GiftType {
// 名字(如1等獎)
private String name;
// 這種獎品的數量,數量越大越容易抽到
private int quantity;
// 這種獎品的優先級,最小為1,數越大越容易抽到
private int priority;
public GiftType(String name, int quantity, int priority) {
this.name = name;
this.quantity = quantity;
this.priority = priority;
}
public int getPriority() {
return priority;
}
@Override
public String toString() {
return “GiftType [name=” + name + “, quantity=” + quantity + “, priority=” + priority + “]”;
}
}
// 獎品
class Gift {
// 每個獎品有唯一id,抽獎不會重複,格式為”16等獎——第8號”
private String id;
// 這個獎品的類別
private GiftType type;
public Gift(String id, GiftType type) {
this.id = id;
this.type = type;
}
public GiftType getType() {
return type;
}
@Override
public String toString() {
return “Gift [id=” + id + “, type=” + type + “]”;
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/233886.html