diff --git a/types/simulation/account.go b/types/simulation/account.go index e031b5a9eb..5bc5bfe14d 100644 --- a/types/simulation/account.go +++ b/types/simulation/account.go @@ -1,6 +1,7 @@ package simulation import ( + "fmt" "math/rand" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" @@ -70,11 +71,17 @@ func RandomFees(r *rand.Rand, ctx sdk.Context, spendableCoins sdk.Coins) (sdk.Co return nil, nil } - denomIndex := r.Intn(len(spendableCoins)) - randCoin := spendableCoins[denomIndex] + perm := r.Perm(len(spendableCoins)) + var randCoin sdk.Coin + for _, index := range perm { + randCoin = spendableCoins[index] + if !randCoin.Amount.IsZero() { + break + } + } if randCoin.Amount.IsZero() { - return nil, nil + return nil, fmt.Errorf("no coins found for random fees") } amt, err := RandPositiveInt(r, randCoin.Amount)