一个挑战塔游戏问题

  最近在玩某易的《阴阳师》。想到一个挑战塔的小问题。挑战塔有1到10层。战胜层数越高,越容易获取高级物品。那么代码大概怎么写呢?

  简单的举例:第一层有10%的概率获取到1个物品; 第二层概率20%,第三层30% 。。。。。

  最关键是一个公式:  random(1,100) <= level*10  

  下面是代码示例。代码想的还有不同类物品的事宜。看注释~

package com.randomGame;

import java.util.Random;

/**
 * 从低到高,1-->10层挑战塔。战斗胜利后,有低中高三种战利品。 
 * 挑战塔层数越高,越容易获取高级物品。
 * 3层以上才有中级物品,6层以上才有高级物品
 * 最多的情况是2个低级,1个中级,1个高级,最少有且只有一个低级物品。
 * 
 * random(1,100) <= level*10  层数越大,越容易取得物品
 * @date   2016年9月21日
 *
 */
public class Game {

    public static void main(String[] args) throws InterruptedException {
        for(int i=1; i<=10; i++){
            String logText = "";
            //低级,根据层数,最少1个低级物品。最多2个            
            int result = new Random(System.currentTimeMillis()).nextInt(100);
            int lowCount = 1;
            if(result<=11*i){
                lowCount++;
            }
            logText += "低级 概率"+11*i+">="+result;
            //Thread.sleep(10);
            //3层以后才有中级
            result = new Random(System.currentTimeMillis()).nextInt(200);
            int middleCount = 0;
            if(i>=3 && result<=11*i){
                middleCount++;
            }
            logText += "	中级 概率"+11*i+">="+result+"	";            
            //Thread.sleep(10);            
            //6层以后才有高级
            result = new Random(System.currentTimeMillis()).nextInt(300);
            int highCount = 0;
            if(i>=6 && result<=11*i){
                highCount++;
            }
            logText += "高级 概率"+11*i+">="+result;            
            //System.out.println(logText);
            System.out.println(String.format("挑战第%s层, 低级物品获得%s个,中级物品获得%s个,高级物品获得%s个。
", 
                    i,lowCount, middleCount, highCount));
        }
    }

}
原文地址:https://www.cnblogs.com/ELMND/p/5892471.html