Просмотр полной версии : случайный вопрос
Привествую!
Хочю сделать на 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;
}
AZart.de
20.03.2002, 13:15
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
Egoritch
20.03.2002, 14:17
вот скрипт. в свое время помучился (противно, что флэш команды 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 - увлекает ;)
Спасибо!!!
Очень большое!!!!
Пойду юзать.....
:)
DeliMIter
21.03.2002, 15:36
Какие-то коды у вас мрачные. Хы. Не факт, что у меня сильно светлый.
Допустим имеется массив вопросов 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
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.