Два дня назад я увидел, что кто-то хочет составить систему экзаменов. В то время я просто кратко использовал случайную функцию RND.
На практике обычно необходимо случайным образом извлечь N вопросов из базы данных.
Все следующие коды основаны на VBS;
Обычно пишут так
'Генерируем неповторяющиеся случайные числа функция rndarray(istart,iend,sum) dim arrayid(),i,j,blnre,temp,iloop,eloop Redim arrayid (сумма-1) я = 0 илуп=0 элуп=0 миллиард = ложь рандомизировать делай, пока я <сумма temp=int(rnd*(iend-istart+1)+istart) если я=0 тогда arrayid(0)=температура я=я+1 илуп=иллуп+1 еще от j=0 до i-1 если arrayid(j)=temp, то миллиард = истина илуп=иллуп+1 Предложение «выход для» очень важно для предотвращения повторных циклов. еще илуп=иллуп+1 конец, если следующий если blnre=false, то arrayid(i)=temp я=я+1 еще миллиард = ложь конец, если конец, если eloop=eloop+iloop илуп=0 петля rndarray=join(arrayid)&количество циклов:&eloop конечная функция response.write rndarray(1,10,5)&<br>'Вызов процесса |
ПС. Iloop и eloop предназначены только для расчета количества циклов.
Выше большинство людей используют этот метод для записи, генерации случайного числа, а затем сравнения его с ранее сгенерированным, чтобы определить, можно ли его использовать;
Но это не искусственный интеллект и не эффективный метод. Почему бы не использовать два массива?
В массиве 1 хранятся необходимые строки, числа и т. д., а в массиве 2 — сгенерированные случайные числа; когда индекс x промежуточной переменной temp генерируется случайным образом каждый раз, он присваивается массиву 2, а затем индекс удаляется из него; массив 1 как количество извлеченных из массива 1.
Способ второй
функция rndstr(istart,iend,isum) дим я, j, vntarray() Redim vntarray (iend-istart) j=начало для i=0 до iend-istart vntarray(i)=j j=j+1 следующий dim vntarray2(), temp, x, y восстановить vntarray2 (isum-1) y=конец-начало+1 х=0 темп = vntarray делать, пока x<isum затемнить рандомизировать vntarray2(x)=temp(int(rnd*y)) а = &vntarray2(x)& temp=split(trim(replace(chr(32)&join(temp)&chr(32),a, ))) х=х+1 у=у-1 петля rndstr = присоединиться (vntarray2) конечная функция ответ.write rndstr(1,5,2) |
Не проще ли было бы так?
Вкратце: если вы хотите сгенерировать случайную строку, содержащую буквы и цифры, вам нужно всего лишь присвоить значение массиву 1 и использовать функцию chr(num);
Предположим, вам нужно создать мобильную программу выигрышной страницы лотереи.
Сначала присвойте значение массиву 1, который может присваиваться циклически от 130... до 139.... Конечно, при фактическом использовании существующее значение присваивается из базы данных, а затем случайным образом извлекается и присваивается массиву 2. ;
Наконец-то еще немного полировки
temp = заменить (объединиться (массив2), chr (32),) |
телефон=влево(temp,6)&***&вправо(temp,2)
Получите результаты, похожие на 137648***58, хаха
Я устал так много писать~~