经典ASP - 如何使用不同的标准Randon唯一数字

时间:2016-04-01 16:42:15

标签: random asp-classic

我正在燃烧我的思绪,我无法解决这个问题。

我有一个带有QUESTIONS的数据库用于测验。

我有10个问题,10分,30个问题,20分(我的想法是我可以提出另外30个问题,40分)

我需要随机选择20个问题。

但我需要选择总共15个问题,10分,5分,20分。

随机所有..

我可以在没有“总是15/5”的情况下随机提出所有问题

****
' Determines how many unique random numbers to be produced
tot_unique = 20

' Determines the highest value for any unique random number
top_number = 100
dim random_number, counter, check, unique_numbers
' When passing a varible for an array use redim
redim random_number(tot_unique)
' begin random function
randomize
' Begin a for next loop from one to the max number of unique numbers
For counter = 1 to tot_unique
' select a number between 1 and the top number value
random_number(counter) = Int(Rnd * top_number)+1
' For next loop to compare the values stored in the array to
' the new random value being assigned
for check=1 to counter-1
if random_number(check)= random_number(counter) then 
' If the current value is equal to a previous value
' subject 
counter=counter-1
end if
next ' Repeat loop to check values
next ' Repeat loop to assign values to the ar

在这里,我不会以10或20分的方式通知问题,并且脚本在1-100之间随机显示20个独特的数字。

我不知道我怎么能做到这一点......任何想法?

1 个答案:

答案 0 :(得分:1)

我能想到的唯一方法就是生成两组随机数:10分为15分,20分为5分。由于同样的问题不能同时是10分和20分,因此您不必检查两组是否有重叠;您只需要一些方法将您的随机数集转换为数据库的过滤器。如果问题具有连续的ID,则只需将随机数添加到第一个ID(或者更确切地说,比第一个ID少一个)。如果问题有连续的ID,我可能只是添加一个连续数字的列,以便进行过滤。

为了将这两种问题组合成一个随机排序的列表,您真正需要的是数字1到20(排列)的随机排序,您可以使用您已经拥有的代码的轻微变化生成(和/或一点点网络搜索)。然后,当您从数据库中读取随机选择的问题时,而不是按照它们返回的顺序将它们放入数组中,根据您的排列重新排序。例如,如果您的随机排序为(5,18,11,12,4,...),则您将从数据库返回的第一个问题放入第5行,将第二个问题放入第18行,将第3个问题放入第11行,等等向前。十五个10点问题总是使用你的1到20排列中的前十五个数字,而五个20点问题总是使用最后五个数字,但这并不重要,因为排列是随机的。