перемешать массив в ActionScript -2 - PullRequest
0 голосов
/ 10 мая 2011

Для генерации генератора билетов в бинго мне нужен массив тасования.

Когда я нажимаю кнопку, я должен получить значения из массива (например, array(1,2,3,4,5,6,7,8,9)). I

Если я получу первые пять, случайное значение может быть 2 5 7 4 8. Если нажать кнопку еще раз, она должна получить значение, отличное от ранее извлеченного значения (например, 1 3 9 6 7)

1 Ответ

0 голосов
/ 23 мая 2011

Я не знаю, разрешено ли вам изменять ввод, но почему бы не попробовать что-то вроде этого:

// passing your array as argument
// passing the total number you want to extract as argument
function getRandNumbers( a:Array, requested_numbers:Number ):Array
{
    // verify we don't request to much numbers
    if ( requested_numbers > a.length ) 
    {
       trace( "Not enought available numbers in array" );
       return null;
    }

    results_array = new Array(); // create our output array
    while( results_array.length < requested_numbers )
    {
       rnd = Math.floor( Math.random() * a.length );
       results_array.push( a[rnd] );
       a.splice( rnd, 1 ); // remove the random result
    }

}

теперь вы уверены, что ваш массив будет содержать только неиспользуемые числа при каждом вызове getRandNumbers.

...