有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将值拆分为两个随机数

我正在用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
    }

}
}

如何将生成的价格值拆分为两个随机值


共 (1) 个答案

  1. # 1 楼答案

    0.01.0之间生成一个random ^{}

    float r = rand.nextFloat();
    

    用它来分割你的价值:

    float priceBook1 = packagePrice * r;
    float priceBook2 = packagePrice * (1-r);
    

    示例/说明

    让我们假设packagePrice100,而r最终是0.4

    priceBook1 = 100 * 0.4;      // 40
    priceBook2 = 100 * (1-0.4);  // 60 
    

    但是,请注意,其中一本书最终可能不花任何钱(在r0.0的情况下)。如果您想防止这种情况发生,只需查看该问题的几个可用问题/答案中的一个,例如"Generating a random double number of a certain range in Java"