Java如何通过循环将数组生成的随机公司名赋值给多个字符串
解决方案
你可以把单条公司名的生成逻辑封装到循环体中,每次循环重新生成随机索引和概率判定值,就能高效生成5个独立的符合概率要求的公司名。注意原代码只生成了一次随机索引,直接复用的话所有公司名都会用到相同的前缀/中缀/后缀片段,无法实现随机效果。
import java.util.Random; import java.util.ArrayList; import java.util.List; class Main { public static void main(String[] args) { String[] companyFirstNames = {"Alpine", "Bear", "Bull", "Cuckoo", "Delta", "Dragon", "Echo", "Fighter", "Giant", "H20", "Indo", "Jared", "Jason", "Kicker", "Lodge", "Little", "Manzo", "Mint", "Neighbour", "Nelson", "Ossuary", "Open", "Private", "Poor", "Quick", "Quiant", "Reach", "Rebel", "Space", "Spear", "Titus", "Trebble", "Underdog", "Upper", "Vital", "Vert", "White", "Whistle", "X's", "Yuri's", "Yogurt", "Zebra"}; String[] companySecondNames = {" Science", " Technology", " Arts", " Research", " Laboratory", " Lodging", " Woodworking", " Fashion", " Oil", " Trading", " Investing"}; String[] companyLastNames = {" Limited", " Co.", " Corp.", " Corporation", " Ltd", " Institute", " Association", " Federation", " Firm"}; Random randomNamer = new Random(); // 用List存储5个公司名,比单独定义5个变量更易维护 List<String> companyList = new ArrayList<>(); // 循环5次生成5个公司名 for (int i = 0; i < 5; i++) { // 每次循环重新生成随机索引,保证每个公司名独立 int randomOne = randomNamer.nextInt(companyFirstNames.length); int randomTwo = randomNamer.nextInt(companySecondNames.length); int randomThree = randomNamer.nextInt(companyLastNames.length); int probability = randomNamer.nextInt(100); String companyName; // 3词概率45%,2词40%,1词15% if (probability < 45) { companyName = companyFirstNames[randomOne] + companySecondNames[randomTwo] + companyLastNames[randomThree]; } else if (probability < 85) { companyName = companyFirstNames[randomOne] + companyLastNames[randomThree]; } else { companyName = companyFirstNames[randomOne]; } companyList.add(companyName); System.out.println("第" + (i+1) + "个公司名:" + companyName); } // 如果必须要赋值给单独的五个变量,可以从List中取 String companyOne = companyList.get(0); String companyTwo = companyList.get(1); String companyThree = companyList.get(2); String companyFour = companyList.get(3); String companyFive = companyList.get(4); } }
- 如果你不需要单独的五个
companyX变量,直接操作companyList即可,后续调整生成数量只需要修改循环终止条件,扩展性更强。 - 概率判断用
<而不是<=是为了适配nextInt(100)生成的0-99整数区间,避免边界判断误差,和你原本的概率分配逻辑完全一致。
内容的提问来源于stack exchange,提问作者Jared
相关产品推荐
相关产品推荐

