Virtually all existing IOTA software uses seeds for key/address generation.
However, it seems that there's nothing stopping a program from generating keys/addresses at random — as long as it has the private key for an address, it can spend those IOTAs regardless of whether it used a seed.
For example, a wallet might generate private keys using an RNG. It would have to store the private keys somewhere, of course, but it seems like otherwise it would function perfectly.
Alternatively, someone might build a wallet that generates keys/addresses deterministically from a phrase, etc.
Can IOTA wallets/software work this way, or is it necessary to use seeds to generate keys/addresses?