Вспышка AS3 Случайная функция, 0-9, КРОМЕ 3 например - PullRequest
0 голосов
/ 18 марта 2011

Интересно, как сделать функцию Math.random () или что-то подобное, когда она выбирает число от 0 до 9.Но по мере выполнения программы появится другая случайная величина.Это случайное значение - это то, что я хочу удалить из шкалы 0-9.(Другая случайная величина также от 0 до 9)

Ответы [ 4 ]

1 голос
/ 18 марта 2011

Math.random () возвращает число от 0-1

function randomNum( modifier:int ):Number{
    return Math.floor(Math.random()*(9-modifier));
}

Новый отредактированный кодПередайте массив, из которого вы хотите извлечь элемент, и он вернет значение случайного элемента.использовать seedArray.splice (0, 1);для удаления элементов из массива в этом случае это будет первый элемент.

var seedArray:Array = [10,1000,20,245,874687,57,3456];
trace(this.randomElement(seedArray) )
seedArray.splice(0, 1);
trace(this.randomElement(seedArray) )
seedArray.splice(0, 1);
trace(this.randomElement(seedArray) )
seedArray.splice(0, 1);
trace(this.randomElement(seedArray) )
seedArray.splice(0, 1);
trace(this.randomElement(seedArray) )
seedArray.splice(0, 1);
trace(this.randomElement(seedArray) )
seedArray.splice(0, 1);
trace(this.randomElement(seedArray) )

    function randomElement( arr:Array ):Number{
      var rand:int = Math.floor(Math.random()*arr.length)
      return arr[rand];
    }
0 голосов
/ 18 марта 2011

Я думаю, что лучше сделать рандомизацию заранее:

var randomValues:Array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
randomValues.sort(function(a:int, b:int):int {return Math.random() < 0.5 ? -1 : 1});

После этой инициализации randomValues.pop() вернет вам неиспользуемое значение из массива.

0 голосов
/ 18 марта 2011

Эта функция получит случайный элемент массива. Затем разделите этот элемент из массива и верните значение элемента. Возвращаемое значение и типы данных результата - единственное, что должно быть изменено.

private function getRandomArrayElement(arr:Array):string
{
    var index:int = Math.floor(Math.random() * arr.length);
    var result:string = arr[index];
    arr.splice(index, 1);

    return result;
}

Если вы хотите сохранить данные в массиве и вернуть рандомизированный массив, это будет работать.

private function randomizeArray(arr:Array):Array
{
    var result:Array = [];

    while (arr.length > 0)
    {
        result.push(arr.splice(Math.floor(Math.random() * arr.length), 1));
    }

    return result;
}

Мои данные испытаний были следующими.

var testArray:Array = ["Hi", "Bye", "Okay", "Yes", "No", "Maybe", "Sometimes", "Anywhere", "You said it!"];
0 голосов
/ 18 марта 2011

это должно работать

private function zeroToNineExcept(toExclude:int):int{
    var retVal: int = -1;
    if(toExclude < 0 || toExclude > 9) {
        //trace a message, throw an argument error, ...
        return retVal;
    }
    while(retVal = Math.round(Math.random() * 9)){
        if(retVal == toExclude){ 
            continue;
        }else{ 
            return retVal;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...