我正在燃烧我的思绪,我无法解决这个问题。
我有一个带有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个独特的数字。
我不知道我怎么能做到这一点......任何想法?
答案 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点问题总是使用最后五个数字,但这并不重要,因为排列是随机的。