2016-04-01 2 views
0

Ich brenne meinen Geist und ich kann dieses Problem nicht lösen.Classic ASP - Wie Randon eindeutige Zahlen mit unterschiedlichen Kriterien

Ich habe eine DB mit FRAGEN für ein QUIZ.

Ich habe 100 Fragen mit 10 Punkten und 30 Fragen mit 20 Punkten (und die Idee ist, dass ich noch Fragen mit 30 hat, 40 Punkte)

ich zufällig 20 Fragen auswählen müssen.

Aber ich muss IMMER 15 Fragen mit 10 Punkten und 5 mit 20 Punkten wählen.

und zufällig alle ..

kann ich zufällig alle Fragen, ohne die „Always 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 

hier nicht, daß ich die Fragen mit 10 oder 20 Punkte informieren und das Skript zufällig 20 UNIQUE Zahlen zwischen 1-100.

Ich weiß nicht, wie ich das machen kann .. Irgendeine Idee?

Antwort

1

Der einzige Weg, an den ich denken kann, ist, zwei Sätze von Zufallszahlen zu generieren: 15 für die 10-Punkte-Fragen und 5 für die 20-Punkt-Fragen. Da dieselbe Frage nicht sowohl 10 Punkte als auch 20 Punkte sein kann, müssen Sie die beiden Sätze nicht auf Überlappungen prüfen; Sie brauchen nur eine Möglichkeit, Ihre Zufallszahlen in einen Filter für Ihre Datenbank zu übersetzen. Wenn die Fragen fortlaufende IDs haben, müssen Sie einfach die Zufallszahlen der ersten ID hinzufügen (oder besser, eine Zahl weniger als die erste ID). Wenn die Fragen nicht aufeinander folgende IDs haben, würde ich wahrscheinlich nur eine Spalte mit fortlaufenden Nummern zum Zwecke der Filterung hinzufügen.

Für die Kombination der beiden Arten von Fragen in eine zufällig sortierte Liste, alles was Sie wirklich brauchen, ist eine zufällige Reihenfolge der Zahlen 1 bis 20 (eine Permutation), die Sie mit einer leichten Variation des Codes bereits generieren könnten haben (und/oder ein bisschen Web-Suche). Dann, wenn Sie Ihre zufällige Auswahl von Fragen aus der Datenbank lesen, anstatt sie in der Reihenfolge, in der sie zurückgegeben werden, in ein Array zu setzen, ordnen Sie sie entsprechend Ihrer Permutation neu an. Zum Beispiel, wenn Ihre zufällige Reihenfolge (5,18,11,12,4,...) geht, würden Sie die erste Frage aus der Datenbank in die fünfte Zeile, die zweite Frage in die 18. Zeile, die dritte Frage in die elfte Zeile und so weiter gestellt. Die fünfzehn 10-Punkte-Fragen würden immer die ersten fünfzehn Zahlen in Ihrer 1-bis-20-Permutation verwenden, und die fünf 20-Punkte-Fragen würden immer die letzten fünf Zahlen verwenden, aber das ist egal, da die Permutation zufällig ist.

+0

Hallo @ Martha! viel für Ihre Antwort. Ja! Ich denke das gleiche .. Das ist eine Option, über die ich nachgedacht habe ... aber ich weiß nicht, ob das die beste Lösung sein wird. In meiner DB hat jede Frage eine Nummer (1-100) - und ich erstelle ein Set, das nur 10 Punkt-Fragen filtert .. (67 Fragen). Ich erstelle ein Array mit der Frage Nummer (1-4-5-7 ... 88..100) - Dann gebe ich das Skript - Tot_unique = 15 und Top_Number = 67. Dann habe ich 15 eindeutige Zufallszahlen zwischen 1- 67. Dann erstelle ich ein weiteres Array, das die Zufallszahlen mit den questionID-Arrays vergleicht. Ich machte das gleiche mit den 20 Punkten und schließe mich den Ergebnissen an. – DANIEL

+0

aber jetzt habe ich ein Array mit zufälligen Fragen - aber mit den 10 Punkten Fragen zuerst (15) und die 20 Punkte Fragen am Ende. Jetzt muss ich dieses Array nach dem Zufallsprinzip neu ordnen, nur um 10 Punkte Frage mit 20 zu mischen .. und 20 Punkte zuerst auch stellen .. irgendeine Idee? Danke vielmals!! – DANIEL

+0

@DANIEL: Ich habe eine Idee hinzugefügt, wie das geht. (Und ich entschuldige mich für all den vagen nicht-ganz-sogar-Pseudo-Code, aber es ist das Beste, was ich an einem Wochenende tun kann. Hoffentlich ist es immer noch etwas hilfreich für dich.) – Martha