![]() |
случайный вопрос
Привествую!
Хочю сделать на Flash'e систему тестирования, таку простенкую, вопросов на 20. И как всегда, возник, вдруг откуда не возмись!!! вопрос!!! Предположим, я хочю чтобы вопросы задавалсь не по порядку, а скажем каждый раз при запуске хаотично! Конечно, Вы скажите, random() смотри.... Ну это понятно, а функция random, как работает? Впросы то могут повторяться, т.е. если сперва все идет как надо, то потом random выбрасывает на не нужный вопрос?! Правильно! Так вот вопрос в том, как избавиться от повторения при случайном вопросе? Наверно, тут нужен массив! Возможно эта тему уже публиковалась, Вы меня уж извините!!! Дайте тогда ссылку!!! :) Спасибо за внимание!!! |
Может, можно как-то лучше, но вот такой способ используется в криптосистеме RC4:
массив делать прийдется, допустим, это массив Quest [] с номерами вопросов по порядку: for (i=1; i<=20; i++) {Quest[i]=i;} А перемешиваются они так: for (i=1; i<=20; i++) {num=random(20); tmp=Quest[i]; Quest[i]=Quest[num]; Quest[num]=tmp; } |
myslish werno, a algoritm - shkol'niy
zavodish sebe massiv x[kol-vo voprosov] tmp=0 while tmp<kol-va elementov { y=math.round(math.random(kol-vo voprosov)) (y v massive uje imeetsia?) then {x[i]=y;tmp=tmp+1;} } vot i vse, na vihode - slu4. uporiado4enniy massiv ili ty hotel gotoviy skript?? :D |
вот скрипт. в свое время помучился (противно, что флэш команды goto не знает)
N=30; //кол. элементов for (i=0;i<N;i++){ oo1=0; while (oo1==0){ oo1=2;ooo=random(N); for (i1=0;i1<i;i1++) if (sToy[i1]==ooo)oo1=0;} sToy[i]=ooo; } на выходе в массиве sToy круто переменшанный список. А вопрос этот поднимался. кто-то из админов помещал прям прототип. |
Ну, вот, набросала, без повторения...
var width_but=50,x_but=200,y_but=200 a=["a","b","c","d","e"] _root.createEmptyMovieClip("b",1) b.moveTo(x_but,y_but) b.lineStyle(1,0) b.beginFill(0xFF0000) b.lineTo(x_but+width_but,y_but) b.lineTo(x_but+width_but,y_but+width_but) b.lineTo(x_but,y_but+width_but) b.lineTo(x_but,y_but) b.endFill() b.onRelease=function(){ z=[] z2=["a","b","c","d","e"] for (var i=0;i<a.length;i++){ n=random(z2.length) z.push(z2.splice(n,1)) } trace(z) } |
Сорьки за тупые лайны) и т.п. MX - увлекает ;)
|
Спасибо!!!
Очень большое!!!! Пойду юзать..... :) |
Какие-то коды у вас мрачные. Хы. Не факт, что у меня сильно светлый.
Допустим имеется массив вопросов Questions, тогда // перед новым опросом нужно сделать function Reset() { QRandom = (new Array()).concat(Questions); } // чтобы добыть случайный вопрос нужно function getQuestion() { var _result = "There's no more..."; if (QRandom.length > 0) { var _index = random(QRandom.length); _result = QRandom[_index]; QRandom.splice(_index, 1); } return _result; } Успехов :cool: |
:D :D :D Чем-то всё это напоминает:
http://slava.podolsk.ru/prog.php |
| Часовой пояс GMT +4, время: 05:05. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.