最近在玩某易的《阴阳师》。想到一个挑战塔的小问题。挑战塔有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)); } } }