java – 如何使用给定数量的属性生成给定数量的随机对象?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何使用给定数量的属性生成给定数量的随机对象?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2351字,纯文字阅读大概需要4分钟。
内容图文
![java – 如何使用给定数量的属性生成给定数量的随机对象?](/upload/InfoBanner/zyjiaocheng/797/8c1aef7f6fb84a6f85d2d8947092e96a.jpg)
我的问题是,如何用给定数量(4-8)的试验产生随机挑战?
试验建立了一个挑战(参见下面的代码).
试验是Challenge类的属性,由enum和EnumMap构建.
所以当我在main中得到一个随机数时(比如r.nextInt(4)4;)我将为一个挑战生成如下数量的试验,如下所示
Weapons = 25;
Hacking = 32;
Vehicle = 34;
Speed = 56;
因此,对于1次挑战,我不需要所有的试验,只需要其中一些试验.但我仍然需要随机选择它们(4 – 8).
如何使用给定数量的属性(及其值)生成这些随机Challenge对象?所以基本上是其中一些,来自所有人.
这都错了吗?我该怎么开始呢?
到目前为止的代码:
import java.util.*;
public class Challenge {
Random r = new Random();
// DRIVE, VEHICLE, ACCURACY, WEAPONS, REFLEX, STRATEGY, CHARISMA, HACKING,
// SPEED, STEALTH;
public static enum Trial {
DRIVE, VEHICLE, ACCURACY, WEAPONS, REFLEX, STRATEGY, CHARISMA, HACKING, SPEED, STEALTH;
}
Map<Trial, Integer> challenge = new EnumMap<Trial, Integer>(Trial.class);
public Challenge() {
challenge.put(Trial.DRIVE, r.nextInt(100) + 25);
challenge.put(Trial.VEHICLE, r.nextInt(100) + 25);
challenge.put(Trial.ACCURACY, r.nextInt(100) + 25);
challenge.put(Trial.WEAPONS, r.nextInt(100) + 25);
challenge.put(Trial.REFLEX, r.nextInt(100) + 25);
challenge.put(Trial.STRATEGY, r.nextInt(100) + 25);
challenge.put(Trial.CHARISMA, r.nextInt(100) + 25);
challenge.put(Trial.HACKING, r.nextInt(100) + 25);
challenge.put(Trial.SPEED, r.nextInt(100) + 25);
challenge.put(Trial.STEALTH, r.nextInt(100) + 25);
}
List<Trial> keys = new ArrayList<Trial>(challenge.keySet());
Trial randomKey = keys.get(r.nextInt(keys.size()));
Integer value = challenge.get(randomKey);
}
解决方法:
比如,你想用t试验产生挑战,其中int t = random.nextInt(5)4,这样4< = t< = 8(注意nextInt的约束是排他的).如果我正确读取您的代码,每个试验都会获得random.nextInt(100)25(因此在25到124之间)的相关值.
你可以这样做.我们创建一个包含所有试验的数组,并通过改组阵列并取第一个t来随机选择t.我们将这些放在地图中,并带有相关值.
Map<Trial, Integer> challenge = new EnumMap<Trial, Integer>(Trial.class);
int t = 4 + random.nextInt(5);
// collect all Trial values in a list
List<Trial> allTrials = Arrays.asList(Trial.values());
// shuffle that list
Collections.shuffle(allTrials);
// select the number of trials we want, add them to challenge
for (int i = 0; i < t; ++i) {
challenge.put(allTrials.get(i), random.nextInt(100) + 25);
}
// example output: {DRIVE=121, WEAPONS=119, STRATEGY=59, HACKING=78, STEALTH=72}
System.out.println(challenge);
内容总结
以上是互联网集市为您收集整理的java – 如何使用给定数量的属性生成给定数量的随机对象?全部内容,希望文章能够帮你解决java – 如何使用给定数量的属性生成给定数量的随机对象?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。