導航:首頁 > 編程語言 > java抽獎概率演算法

java抽獎概率演算法

發布時間:2024-04-07 00:47:35

java隨機生成1-100之間的數10000次,計算出88出現得概率

package zhangyw.test;

import java.util.Random;

public class T {

public static void main(String[] args) throws Exception {
int count = 0;
Random random = new Random();
for (int i = 0; i < 10000; i++) {
int value = random.nextInt(100) + 1; //nextInt方法返回的值在0-99之間,所以需要加1
if (value == 88) {
count++;
}
}

System.out.println(count / 100.0 + "%");
}

}

㈡ 有哪些經典的抽獎演算法

常見的有兩種

第一類是常見的有等級的抽獎活動,如一等、二等、三等獎等等

//分別為一、二、三、四等將的獎品數量,最後一個為未中獎的數量。
privatestaticfinalInteger[]lotteryList={5,10,20,40,100};

privateintgetSum(){
intsum=0;
for(intv:lotteryList){
sum+=v;
}
returnsum;
}

privateintgetLotteryLevel(){
Randomrandom=newRandom(System.nanoTime());
intsum=getSum();
for(inti=0;i<lotteryList.length;++i){
intrandNum=Math.abs(random.nextInt())%sum;
if(randNum<=lotteryList[i]){
returni;
}else{
sum-=lotteryList[i];
}
}
return-1;
}

第二類是不分等級的抽獎活動,僅需要參與人數與獎品總數,各獎品中獎概率相等。

//另一種抽獎演算法,用於公司抽獎,即總參與人數與獎品數固定。
=75;
privatestaticfinalinttotal=175;
privatestaticSet<Integer>lotterySet=newHashSet<Integer>();
static{
for(inti=1;i<=lotteryNum;++i){
lotterySet.add(total*i/lotteryNum);
}
}
privateintgetLotteryNum2(){
Randomrand=newRandom(System.nanoTime());
intrandNum=Math.abs(rand.nextInt())%total;
if(lotterySet.contains(randNum)){
returnrandNum*lotteryNum/total;
}
return-1;
}

㈢ java投擲骰子,求點數的出現概率

很簡單 。
int [] num = new int[3]; //數組長度為3
int diag=0; //統計出現5的次數
for(int i=0;i>3;i++){ //擲骰子三次 ,也就是三個骰子
隨機數字 num[i]=(int)(Math.random()*5)+1; //隨機1-6的數字
if(num[i]==5){
diag++; //當骰子等於5的時候,統計次數加1;
}
}
double a=diag/3; //骰子出現5的次數,除以骰子總數,得到概率。
System.out.println(a);

㈣ Java代碼實現抽獎:從班級的學號中抽出一個一等獎,兩個二等獎,三個三等獎

抽取問題, 重點是 同一個學號不能重復被抽取.

解決辦法很多,

  1. 比如數組可以使用下標來標記,號碼是否被使用,使用了就繼續下一次抽取

  2. 也可以使用集合來抽取,把集合順序打亂,然後隨便抽幾個就可以了

參考代碼:數組法

importjava.util.Random;

publicclassTest{

publicstaticvoidmain(String[]args){
intstuNums=30;

int[]nums=newint[stuNums];//存儲學號的數組
boolean[]flags=newboolean[stuNums];//標記,用於標記對應下標的學號是否已經被抽取過了
for(inti=0;i<stuNums;i++){
nums[i]=i+1;//給學號賦值
}

Randomr=newRandom();
while(true){
intindex=r.nextInt(stuNums);
if(!flags[index]){
System.out.println("A等:"+nums[index]);
flags[index]=true;//標記已經被使用過了
break;
}
}


for(inti=0;i<2;i++){
intindex=r.nextInt(stuNums);
if(!flags[index]){
System.out.println("B等:"+nums[index]);
flags[index]=true;
}else{
i--;//如果已經被抽取過了,那麼i建議,再次循環
}
}

for(inti=0;i<3;i++){
intindex=r.nextInt(stuNums);
if(!flags[index]){
System.out.println("c等:"+nums[index]);
flags[index]=true;
}else{
i--;
}
}
}
}

集合法

importjava.util.ArrayList;
importjava.util.Collections;

publicclassTest2{
publicstaticvoidmain(String[]args){
intstuNums=20;
ArrayList<Integer>list=newArrayList<Integer>();
for(inti=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演算法:根據物品的數量來確定抽獎的概率(當物品數量為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;
}

}

㈥ 抽獎概率的計算

/*
* 下面方法是在考慮獎項有名額限制的情況下
* 暫定一等獎1名 二等獎 2名 3等級3名 幸運獎10名
* 中獎方法適用math.random(1000)
*/
Integer one = 1;
Integer two = 2;
Integer three = 3;
Integer lucky = 10;
public Integer Lottery(){//返回值:1-一等獎 2-二等獎 3-三等獎 4-幸運獎 0-不中獎
Integer ranNum = (int)(Math.random()*1000);
System.out.println(ranNum);
if(ranNum>=0&&ranNum<10)//獲獎范圍內
{
if(ranNum==0)//獲得0 概率為0.1%
{
if(one>0)
{
one--;
return 1;
}
if(two>0)
{
two--;
return 2;
}
if(three>0)
{
three--;
return 3;
}
if(lucky>0)
{
lucky--;
return 4;
}
}

if(ranNum>=0&&ranNum<2)
{
if(two>0)
{
two--;
return 2;
}
if(three>0)
{
three--;
return 3;
}
if(lucky>0)
{
lucky--;
return 4;
}
}

if(ranNum>=0&&ranNum<5)
{

if(three>0)
{
three--;
return 3;
}
if(lucky>0)
{
lucky--;
return 4;
}
}

if(lucky>0)
{
lucky--;
return 4;
}
}

return 0;
}

㈦ 用java怎麼實現控制中獎率

可以做到!用 Random 得到隨機的數,再根據你的登陸人的身份 控制隨機的次數是多少!
例如:
1 - 20 為中獎, 普通就隨機出 10000個數。會員的話就隨機100個數就好了!

閱讀全文

與java抽獎概率演算法相關的資料

熱點內容
如何快速清除app廣告 瀏覽:715
單片機按鍵外部中斷 瀏覽:559
單片機的usb供電 瀏覽:255
更改android解析度 瀏覽:185
phpstaticfinal 瀏覽:694
成人倫理風月片電影 瀏覽:294
禁播愛情片 瀏覽:21
動漫電影免費版大全 瀏覽:14
java什麼是this 瀏覽:811
拍攝指南by小說製造機txt下載 瀏覽:738
豆瓣pdf 瀏覽:723
春宮妖姬演員表 瀏覽:112
韓國情愛電影在線 瀏覽:812
程序員那麼可愛顧墨吃醋 瀏覽:201
伺服器未測速怎麼辦 瀏覽:15
男主角林晨的都市小說 瀏覽:899
百度文庫系統源碼nodejs 瀏覽:997
電影院正在上映的電影怎麼在家看 瀏覽:61
永輝生活app如何使用手機閃付 瀏覽:178
吸奶的電影 瀏覽:986