// note: non integer exponents are slow
ZipfDistributionImpl zdiBanks = new ZipfDistributionImpl((Integer) state.get("numBanks"), 1);
String bank = Utils.getBank(zdiBanks.inverseCumulativeProbability(rand.nextDouble()));
ZipfDistributionImpl zdiAccts = new ZipfDistributionImpl(numAccts, 1);
String acct1 = Utils.getAccount(zdiAccts.inverseCumulativeProbability(rand.nextDouble()));
String acct2 = Utils.getAccount(zdiAccts.inverseCumulativeProbability(rand.nextDouble()));
while (acct2.equals(acct1)) {
// intentionally not using zipf distribution to pick on retry
acct2 = Utils.getAccount(rand.nextInt(numAccts));
}