2010-03-06 7 views

Répondre

1

La solution la plus simple serait de faire deux fois ce qui suit.

*(std::advance(cammini.begin(), rand() % cammini.size())) 

Vous pouvez le faire de manière plus efficace si vous générez deux indices, l'avance par le plus petit, puis avance par la différence entre eux.

+0

Notez que ceci est biaisé vers des index plus petits. – Joey

+0

@Johannes, je ne pense pas. Peux-tu élaborer? – avakar

+0

En supposant que 'rand()% constant' est biaisé, il a tendance à l'être. L'idée elle-même fonctionne, étant donné la génération de nombres aléatoires non biaisée, mais un ensemble n'est probablement pas un conteneur de choix pour choisir des valeurs aléatoires sur. – UncleBens

Questions connexes