Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   random без повторений (http://www.flasher.ru/forum/showthread.php?t=118207)

zzz_dmg 18.11.2008 01:36

random без повторений
 
не могу придумать, как сделать так, чтобы картинки загружались по очереди рандомно, но чтобы последующая не повторяла предшествующую. только получилось сделать так: что картинки - это массив и я рандомно составляю массив (т.е. в массиве элементы не повторяются). а как сделать без массива

Division 18.11.2008 02:12

А чем вариант с массивом не нравится?

zzz_dmg 18.11.2008 02:29

) тем что массив большой и за большой промежуток времени картинки повторяются только один раз. а так они будут повторяться чаще. просто когда обычным рандомом делаешь, то бывает картинка выпадает раза 3-4. да и еще. картинки разделены на три группы и для каждой группы свой рандом, а у каждой группы своя длина массива) вот...
а еще. когда весь массив проходит и он создается заново (рандом чисел), то есть вероятность, что последняя цифра из массива совпадет с первой и опять задача сводится к исходным условиям

Eric Gurt 18.11.2008 03:13

а если логику включить? Пусть у нас есть массив со списком всех картинок. Дальше создаем новый массив, в него рандомно закидываем по картинке из того массива, при этом в том массиве взятую картинку удаляем. Все, показываем картинки в их порядке во втором массиве!

DarkLight 18.11.2008 07:16

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

zzz_dmg 18.11.2008 09:32

сейчас я так и делаю. из массива картинок создаю новый массив где картинки стоят случайным образом без повторений и это массив проигрвается с удалением из массива картинки, котороя уже была показана. кагда весь массив удалился, создаю новый. а как отказаться от этого массива и генерировать просто числа

kyzi007 18.11.2008 11:55

Код AS1/AS2:

function playImg(){
        rand = Math.floor(Math.random()*100);
        if(rand < 35){
                if(playing_img !=1){
                        mebel.play();
                        playing_img =1;
                } else {
                        playImg();
                }
        }else if(rand < 67){
                if(playing_img !=2){
                        svet.play();
                        playing_img =2;
                } else {
                        playImg();
                }
        }else if(rand < 101){
                if(playing_img !=3){
                        aksess.play();
                        playing_img =3;
                } else {
                        playImg();
                }
        }
}

вот грубо для 3 позиций, но общяя идея должна подойти.

etc 18.11.2008 12:00

kyzi007, отредактируйте свой пост и оформите код тегами [as][/as].

Zik. 18.11.2008 13:43

Эта тема уже обсуждалась, спрашивал я, поищите в поиске.


Часовой пояс GMT +4, время: 18:25.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.