Jump to content
  • 0

Помогите исправить скрипт


Fid
 Share

Question

Всем доброго времени суток. Есть небльшая проблема. Есть некий скрипт, который реализует тестирование. Вопрсы выбираются случайным образом из q2 и им соответствуют ответы a2. Затем функция askMe выбирает случайным образом число из диапазона 0 ... q.lenght-1 и задаёт соответствующий вопрос, а потом сравнивает ответ на этот вопрос с введённым значением. Проблема заключается в том что функция в ходе одного теста может задать один и тот же вопрос несколько раз, так как рандом. Нужно сделать так чтобы все вопросы выходили только по одному разу. По идее наверное надо сделать некоторый массив или список, в который нужно будет добавлять уже выпавшие номера вопросов и потом в момент генерации задать условие, что если выпадет тот номер который уже есть в списке выпавших номеров, произвести генерацию номера снова. Только вот со знанием языка у меня хреновато. Помогите. Для знающих людей я считаю это дело пяти минут.

var q2 =

['?',

'?',

'?',

'?'

];

var a2 = ['1', '1', '1', '1'];

function askMe(q,a){

var p = 0;

for(i=1;i<q.length+1;i++)

{ var cur = Math.round(Math.random() * (q.length-1));

if (prompt(q[cur], '') == a[cur]) {

p++;

}

}

alert('Правильных ответов: '+p);

}

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Или вот вопрос попроще. Как сделать так чтобы я мог использовать целочисленную переменную (например cur, который равен, например 3), как символ. То есть чтобы cur=3 я мог использовать например в опреации сложении строк . s = s + cur?

Или вот вопрос попроще. Как сделать так чтобы я мог использовать целочисленную переменную (например cur, который равен, например 3), как символ. То есть чтобы cur=3 я мог использовать например в опреации сложении строк . s = s + cur?

Link to comment
Share on other sites

  • 0
По идее наверное надо сделать некоторый массив или список, в который нужно будет добавлять уже выпавшие номера вопросов и потом в момент генерации задать условие, что если выпадет тот номер который уже есть в списке выпавших номеров, произвести генерацию номера снова.

Вы в общем-то нашли решение сами, только подрихтуйте его:

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

Link to comment
Share on other sites

  • 0
Вы в общем-то нашли решение сами, только подрихтуйте его:

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

:)

Я бы так поступил еще лет 7-8 назад.

У вас есть массив вопросов questionArray. Сгенерируйте index = Math.floor( Math.random() * questionArray.length )); А потом удалите элемент с индексом index.

Все.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy