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

  • Обсуждения

    • Актуальные контакты: Telegram: @Nikker_web E-Mail:   tarasevich.email@gmail.com Портфолио https://www.behance.net/d4d4186e Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ    
    • Актуальные контакты: Telegram: @Nikker_web E-Mail:   tarasevich.email@gmail.com   Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ   Портфолио https://www.behance.net/d4d4186e
    • Доброго всем времени суток. Прошу помощи. Научите принципу изменения футера. Движок Xenforo. Версия 2.2.10. Стиль дефолтный. Что именно нужно в итоге на фото примере. Мой шаблон app.footer less имеет следующее значение.  .p-footer { .xf-publicFooter(); a { .xf-publicFooterLink(); } } .p-footer-inner { .m-pageWidth(); .m-pageInset(); padding-top: @xf-paddingMedium; padding-bottom: @xf-paddingLarge; } .p-footer-row { .m-clearFix(); margin-bottom: -@xf-paddingLarge; } .p-footer-row-main { float: left; margin-bottom: @xf-paddingLarge; } .p-footer-row-opposite { float: right; margin-bottom: @xf-paddingLarge; } .p-footer-linkList { .m-listPlain(); .m-clearFix(); > li { float: left; margin-right: .5em; &:last-child { margin-right: 0; } a { padding: 2px 4px; border-radius: @xf-borderRadiusSmall; &:hover { text-decoration: none; background-color: fade(@xf-publicFooterLink--color, 10%); } } } } .p-footer-rssLink { > span { position: relative; top: -1px; display: inline-block; width: 1.44em; height: 1.44em; line-height: 1.44em; text-align: center; font-size: .8em; background-color: #4682B4; border-radius: 2px; } .fa-rss { color: white; } } .p-footer-copyright { margin-top: @xf-elementSpacer; text-align: center; font-size: @xf-fontSizeSmallest; } .p-footer-debug { margin-top: @xf-paddingLarge; text-align: right; font-size: @xf-fontSizeSmallest; .pairs > dt { color: inherit; } } @media (max-width: @xf-responsiveMedium) { .p-footer-row-main, .p-footer-row-opposite { float: none; } .p-footer-copyright { text-align: left; padding: 0 4px; // aligns with other links } }  
    • Нужны сайты с примерами верстки, типа https://css-tricks.com/. Типовые приемы и нестандартные на все случаи жизни. Накидайте ссылок.
×
×
  • 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