---
title: "Hur gör man bäst."
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/84949-hur-gör-man-bäst"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "alfa"
published: "2003-09-01T07:25:31.000Z"
updated: "2003-09-01T12:47:54.000Z"
replies: 3
views: 311
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/84949-hur-gör-man-bäst"
---

# Hur gör man bäst.

## #1 — alfa, 2003-09-01T07:25Z

Hur ska man göra bäst för att slumpa ut dessa nummer ett och ett

nummer 

1st  1000
2st 500
10st 100
20st 50
50st 20
100st 10
200st 5
12669st 0

Om man tar den första som är 1000 så får den bara förekomma en gång. 

Tar man den sista så ska den komma upp 12669 gånger. 

Måste bli på något sätt att den ska räkna ner om en blivit använd.

Hoppas ni förstår vad jag menar

Alfa

Permalänk: https://www.webforum.nu/p/84949

## #2 — Jaar, 2003-09-01T08:02Z

Jag antar att det är ordningen som ska vara slumpade, eftersom nummren och antalet verkar vara fasta...

Att göra någon slumpfunktion för detta som ska vara bra kräver en del sannolikhets lära, något jag inte är spec bra på.

Men grundidéen som jag kom på var typ denna:

1\. Sätt init variablerna till antalet

ex 
antal1000 = 1
antal500 = 2
antal100 = 10
antal50 = 20
osv

2\. Slumpa ut en siffra beroende på sannolikhet... här får du nog fråga nån annan, men här är en "ovettig"

```
Randomize 'för att det ska slumpas...

while antal1000 + antal500 + antal100 ... > 0 
  randomValue = 8 * Rnd() + 1   
  intRandomValue = Int(randomValue)

  select case intRandomValue
    case 1
      if antal1000 > 0 then
        Response.write "1000, "
        antal1000 = antal1000 - 1
      end if
    case 2
      if antal500 > 0 then
        Response.write "500, "
        antal500 = antal500 - 1
      end if
    case 3
      if antal100 > 0 then
        Response.write "100, "
        antal100 = antal100 - 1
      end if
  end select

loop
```

Detta är inte den snyggaste koden ... men det var enkelt att göra...
Grejjen är att det hela tar väldigt mycket extra tid... för när en har "tagit slut" ... så kommer var 8:e loop att vara i onödan...
när två, var 4:e .. när 3, var 3/8 ...
det betyder att när det är ett nummer kvar så kommer den loopa 8 ggr (ca) för att få fram just det nummret... vilket inte är spec bra....
Men det funkar.. :)

Nån kan säkert förbättra...

Permalänk: https://www.webforum.nu/p/1146007

## #3 — alfa, 2003-09-01T08:36Z

Man ska bara få ut ett av nummerna varje gång 
man öppnar sidan.

Tex
1 gången blir det 5
nästa blir det 10
3 blir 50
4 blir 5
5 blir 0
6 blir 0
7 blir 5
osv

1st 1000 
2st 500 
10st 100 
20st 50 = 20 - 1 = 19
50st 20 
100st 10 = 100 - 1 = 99
200st 5 = 200-3 = 197
12669st 0 = 12669 - 2 = 12667

tills alla har varit använda tills alla står på noll

Men man måste registrera om en blivit använd 
gör man lättast mot en databas

Det som är frågan är hur man slumpar fram vilken
man ska ta bäst och alla måste bli använda en gång
D.V.S tex 100 ska komma fram 10 gånger av 14000
och 0 ska komma fram 12669 av 14000 

osv

Alfa

Permalänk: https://www.webforum.nu/p/1146021

## #4 — alfa, 2003-09-01T12:47Z

Dim MySQL
Dim Con
Const adOpenKeyset=1

MySQL = "SELECT tal.tal, tal.antal FROM tal;"
Set objRecordset1 = Server.CreateObject("ADODB.Recordset")
objRecordset1.Open MySQL, Con, adOpenKeyset
n = objRecordset1.Recordcount

dim vinstnummer(10)
Dim vinstnummer_antal(10)

Det som finns i databasen

tal 1000 Antal 1 
tal  500 Antal 2 
tal  100 Antal 10 
tal   50 Antal 20 
tal   10 Antal 100 
tal    5 Antal 200 
tal    0 Antal 12000 

for i = 1 to n
	tal = objRecordset1("tal")
	antal = objRecordset1("antal")
	
	
	
	alla_tal = alla_tal -- antal
	if tal = 0 or antal = 0 then
	Else
		
		vinstnummer(i) = tal
		vinstnummer_antal(i) = antal
		antal_vinster = abs(antal_vinster -- antal)
	End if
objRecordset1.MoveNext
next
set objRecordset1 = nothing

Randomize Timer
Slump_tal = INT(RND\*alla_tal) + 1

Om slumptalet är mindre än antal_vinster 

if Slump_tal =\< antal_vinster then 
      
Else
response.write "Ingen vinst"
End if

Den ska välja efter databasen

Om slumpalet är 4 så ska den välja tal 100
Eller om slump talet är 180 ska den välja tal 5
Eller om slumptalet är 15 ska den välja tal 50

Är slumptalet högre än 333 går den in i else
Och skriver "ingen vinst"

Hur ska få till det på bästa sätt?

Alfa

Permalänk: https://www.webforum.nu/p/1146187

---

Tråden på webben: https://www.webforum.nu/amne/asp/84949-hur-gör-man-bäst
