Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > что делает фукнция


Автор: burakov 17.11.2012, 00:21
Здравствуйте, 

подскажите, на вход функции попадает массив.
Код

sub randarray {
    my @array = @_;
    my @rand = undef;
    my $seed = $#array + 1;
    my $randnum = int(rand($seed));
    $rand[$randnum] = shift(@array);
    while (1) {
        my $randnum = int(rand($seed));
        if ($rand[$randnum] eq undef) {
            $rand[$randnum] = shift(@array);
        }
        last if ($#array == -1);
    }
    return \@rand;
}



что на выходе?


Автор: DurRandir 17.11.2012, 02:51
Oh shi...

Автор: Jimy 17.11.2012, 22:04
На выходе ссылка на массив содержащий перемешанные в случайном порядке элемнты переданного в функцию массива

Автор: DurRandir 18.11.2012, 15:20
Цитата(Jimy @ 17.11.2012,  23:04)
На выходе ссылка на массив содержащий перемешанные в случайном порядке элемнты переданного в функцию массива

Проблема в том, что она этого не делает)

Автор: alezzz 18.11.2012, 22:58
Цитата(DurRandir @  18.11.2012,  15:20 Найти цитируемый пост)
Проблема в том, что она этого не делает)

а можно развёрнутый ответ почему не делает? пока вижу что работает как Jimy описал.

Автор: DurRandir 18.11.2012, 23:34
Цитата(alezzz @ 18.11.2012,  23:58)
Цитата(DurRandir @  18.11.2012,  15:20 Найти цитируемый пост)
Проблема в том, что она этого не делает)

а можно развёрнутый ответ почему не делает? пока вижу что работает как Jimy описал.

Ну пусть мы передаём в неё (1,undef,2). Что она нам вернёт, и с какой вероятностью?)

Автор: alezzz 18.11.2012, 23:54
увидел, есть баг.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)