Najszybszym rozwiązaniem - zakładając, że nie wielokrotnie wybrać na tej samej tablicy - jest, aby wybrać indeks losową, zwrócić go, czy to prawda, i powtórzyć, jeśli nie. W najlepszym przypadku, gdy wszystkie wpisy są prawdziwe, jest to O (1); w najgorszym przypadku, gdy tylko jeden wpis jest prawdziwy, jest to O (n) (każda próba ma 1/n szansę na trafienie w jedyną prawdziwą wartość, co oznacza spodziewaną liczbę prób n). To nie jest gorsze niż jakiekolwiek inne opublikowane rozwiązania.
Jeśli spodziewasz się, że tablica będzie prawie zawsze fałszywa, możesz wybrać inne rozwiązanie, ponieważ wariancja w czasie wykonywania tej przypadkowej metody będzie wysoka.
Niestety, to zapomniał słowa. Chciałem powiedzieć: zwróć indeks losowej wartości PRAWDZIWEJ ... Nie tylko pierwszej, którą znajdziemy. Ale funkcja powinna losowo zwracać dowolny z indeksów zawierających PRAWDA. – PaulV
@PaulV Dokładnie to robi ta funkcja. –
@Nick Tak, ale zredagowałem swoją odpowiedź;) –