我正在Java中创建一个随机的图书目录,我打算将一个图书包的随机生成的价格值分成两个单独的值(表示两本书的各个包)。
就像。随机生成的图书包42售价为80美元,其中两本书的单独价格为$X和$Y。
public class MultiAgent {
int maxBookID = 50;
int maxBookPrice = 100;
int maxNumItems = 50;
void buildCatalogue() {
int numItems = rand.nextInt(maxNumItems);
while (bookCatalogue.size() < numItems) {
int ranID = rand.nextInt(maxBookID);
bookCatalogue.put(String.valueOf(ranID), rand.nextInt(maxBookPrice));
}
for (Object key : bookCatalogue.keySet()) {
System.out.println("Package ID: " + (String) key + "; price value: " + bookCatalogue.get(key)); //The individual values of the two books should print here
}
}
}如何将生成的价格值分成两个随机值?
发布于 2017-04-17 01:23:58
在float和0.0之间生成一个1.0
float r = rand.nextFloat();用它来分割你的价值:
float priceBook1 = packagePrice * r;
float priceBook2 = packagePrice * (1-r);示例/说明
假设packagePrice是100,r最终成为0.4
priceBook1 = 100 * 0.4; // 40
priceBook2 = 100 * (1-0.4); // 60 但是,请注意,其中一本书可能最终不会花费任何费用(在r是0.0的情况下)。如果您想防止这种情况发生,只需查看问题的几个可用问题/答案中的一个,例如https://stackoverflow.com/questions/9723765/generating-a-random-double-number-of-a-certain-range-in-java。
https://stackoverflow.com/questions/43443910
复制相似问题