Use uma concatenação de um número incrementado exclusivo e um número gerado aleatoriamente.
O número incrementado exclusivo garante que o resultado seja único e o número gerado aleatoriamente o torna difícil de adivinhar.
Isso é simples e com garantia de nenhuma colisão (1). O resultado é incremental , parcialmente aleatório e não previsível (desde que a parte do número aleatório seja gerada com um bom PRNG).
(1):Você precisa preencher
id
e random
com zeros, ou separá-los com algum caractere que não seja dígito. Com um banco de dados MySQL, isso se traduz em:
CREATE TABLE foo (
id int not null auto_increment,
random int not null,
...
primary key (id)
);