---
title: "slumpa bokstäver & siffror"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/5546-slumpa-bokstäver-siffror"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "nanne"
published: "2000-04-11T08:34:00.000Z"
updated: "2005-12-09T08:48:49.000Z"
replies: 18
views: 4940
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/5546-slumpa-bokstäver-siffror"
---

# slumpa bokstäver & siffror

## #1 — nanne, 2000-04-11T08:34Z

Tänkte utveckla en liten vykortstjänst och behöver då slumpa fram en sträng som är 10 tecken lång och ska innehålla bokstäver och siffror. Förstår att jag ska använda mig utav reguljära uttryck men jag har ingen erfarenhet utav detta. Någon som kan knuffa mig i rätt riktning?

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

## #2 — emission, 2000-04-11T09:44Z

randomize()
intUnique=Int((9999999999-1)\*Rnd + 1)

bara siffror, men det räcker garanterat.

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

## #3 — Brimba, 2000-04-11T10:00Z

Hej!

Jag har en PSW generator jag pillade med en gång liggandes, skall leta upp den och postar senare här min lösning. För minns inte exakt hur jag gjorde.

Ha det!

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

## #4 — fredrik, 2000-04-11T10:28Z

Hej, jag har själv en vykorts sida där jag slumpar fram bokstäver blandat med siffror. 

Du kan använda följande:

```
dim i, id
for i=0 to 4
   Randomize
   id=id & int(9*rnd) & chr(Int(26 * Rnd)+97) 
next
```

här blir varannat tal en siffra och varannat en bokstav.
chr omvandlar ju ett tal till tecken och rnd sköter ju slumpningen.

hoppas det funkar.

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

## #5 — nanne, 2000-04-11T14:15Z

TACK!... funkar finfint!

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

## #6 — Brimba, 2000-04-11T14:28Z

Trevligt att ni har löst det redan, men postar endå en annan lösning som slumpar ut stora/små bokstäver med siffror.

```
<%
Passwordeller = ""

Randomize

For i = 1 to 10
intNum = Int(10 * Rnd + 48)
intBig = Int(26 * Rnd + 65)
intSmall = Int(26 * Rnd + 97)
intRand = Int(3 * Rnd + 1)

Select Case intRand
Case 1
delPasseller = Chr(intNum)
Case 2
delPasseller = Chr(intBig)
Case 3
delPasseller = Chr(intSmall)
End Select

Passwordeller = Passwordeller & delPasseller

Next

response.write(Passwordeller & "<br>")
%>
```

Ha det!

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

## #7 — ptr_lks, 2005-12-07T14:00Z

> **Brimba skrev:**
>
> Trevligt att ni har löst det redan, men postar endå en annan lösning som slumpar ut stora/små bokstäver med siffror.
> 
>
>
> ```
> <%
> Passwordeller = ""
> 
> Randomize
> 
> For i = 1 to 10
> intNum = Int(10 * Rnd + 48)
> intBig = Int(26 * Rnd + 65)
> intSmall = Int(26 * Rnd + 97)
> intRand = Int(3 * Rnd + 1)
> 
> Select Case intRand
> Case 1
> delPasseller = Chr(intNum)
> Case 2
> delPasseller = Chr(intBig)
> Case 3
> delPasseller = Chr(intSmall)
> End Select
> 
> Passwordeller = Passwordeller & delPasseller
> 
> Next
> 
> response.write(Passwordeller & "<br>")
> %>
> ```
>
> 
> 
> Ha det!
> 
> 
> 
> \------------------
> Mvh
> Patrik
> aka Brimba
> 
>  [www.datormaklarna.se](http://www.datormaklarna.se) 
>   <patrik@datormaklarna.se>

vet att tråden är gammal, men kan du förklara hur du tänkt?

> intBig = Int(26 \* Rnd + 65)
> intSmall = Int(26 \* Rnd + 97)

I ovanstående kod förstår jag att
26 betyder att du har använt 26 bokstäver, men var lägga till 65 respektive 97?
och varför

> intRand = Int(3 \* Rnd + 1)

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

## #8 — @nders, 2005-12-07T14:06Z

> men var lägga till 65 respektive 97?

Om frågan är varför, så ta en titt på närmaste asciitabell (till exempel <http://www.lookuptables.com/>) så ser du att teckenkoderna för versaler börjar på 65, och gemener på 97.

> 26 betyder att du har använt 26 bokstäver,

Snarare hur många bokstäver det finns, inte hur många som här använts. Koden slumpar ju bara fram ett tecken i taget.

> och varför
> intRand = Int(3 \* Rnd + 1)

Den slumpningen bestämmer i vilken ordning det skall komma en siffra, en gemen eller en versal. Titta på select case-satsen i koden.

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

## #9 — ptr_lks, 2005-12-07T17:49Z

> **@nders skrev:**
>
> citat\]och varför
>
>
> ```
> intRand = Int(3 * Rnd + 1)
> ```
>
>  en slumpningen bestämmer i vilken ordning det skall komma en siffra, en gemen eller en versal. Titta på select case-satsen i koden.

ajg tittar, men blri inte klokare för det  :q 
Som jag förstår så slumpar de olika "case" fram 1 siffra, 1 gemen och 1 versal
men fattar inte vad 

```
intRand = Int(3 * Rnd + 1)
```

 har för roll i det hela?

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

## #10 — cyprys, 2005-12-07T18:05Z

intRand kan få värdena 1, 2 eller 3 genom den koden. 
0 \< Rnd \< 1

Han ser alltså det som tre alternativ som passar in fint på de tre alternativ som finns för nästa tecken i lösenordet (big, small eller int). Är intRand 1 blir nästa tecken numeriskt, 2 = liten bokstav och 3 stor bokstav.

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

## #11 — @nders, 2005-12-07T18:06Z

Koden lägger ett slumptal mellan 1 och 3 i variabeln intRand.
intRand bestämmer sedan, i select case-satsen, om det är en siffra, en gemen eller en versal som ska väljas för detta tecken.

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

## #12 — ptr_lks, 2005-12-07T18:30Z

> **@nders skrev:**
>
> Koden lägger ett slumptal mellan 1 och 3 i variabeln intRand.
> intRand bestämmer sedan, i select case-satsen, om det är en siffra, en gemen eller en versal som ska väljas för detta tecken.

tack, men hur kan ni/jag dra denna slutsats   :q

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

## #13 — cyprys, 2005-12-07T18:34Z

> **ptr_lks skrev:**
>
> tack, men hur kan ni/jag dra denna slutsats   :q

Som jag skrev ovan. Vi vet att Rnd ligger mellan 0 och 1.

0 \< Rnd \< 1
3 \* Rnd ligger alltså mellan 0 och 3
0 \< 3\*Rnd \< 3

\+1 borde vara förståeligt.
1 \< 3\*Rnd + 1 \< 4

Int() kapar helt enkelt av alla eventuella decimaler.
3\.99 blir således 3.

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

## #14 — ptr_lks, 2005-12-07T18:55Z

> **cyprys skrev:**
>
> Som jag skrev ovan. Vi vet att Rnd ligger mellan 0 och 1.
> 
> 0 \< Rnd \< 1
> 3 \* Rnd ligger alltså mellan 0 och 3
> 0 \< 3\*Rnd \< 3
> 
> \+1 borde vara förståeligt.
> 1 \< 3\*Rnd + 1 \< 4
> 
> Int() kapar helt enkelt av alla eventuella decimaler.
> 3\.99 blir således 3.

ja, så långt hänger jag altså med  :) men inte med kopplingen med "case"

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

## #15 — cyprys, 2005-12-07T19:14Z

Han har en for-lopp som itererar 10 ggr. Varje loop lägger han till ett tecken till lösenordssträngen. Vilket slags tecken som läggs till bestäms genom select case-satsen.

```
for i = 0 to 10
' slumpa fram ett tecken för varje sort. (num, big, small)
' fixa en variabel som slumpvis har värdet 1, 2 eller 3
select case slumpvariabel 
case 1 : lösenord = lösenord & siffra
case 2 : lösenord = lösenord & versal
case 3 : lösenord = lösenord & gemen
end select
exit for

returnera lösenord
```

Om det är hur select case fungerar som du har problem med... <http://www.asp101.com/samples/case.asp>

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

## #16 — ptr_lks, 2005-12-07T19:19Z

tänk att jag är blind på ögat  ;) 
Läste inte riktigt "select case satsen"...

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

## #17 — WebbisNet, 2005-12-09T03:17Z

Den jag har på min E-kortsida tar datum och tid och gör till en unik sträng för varje kort
\<%=replace(Date(),"-","")%\>\<%=replace(Time(),":","")%\>\<%=left(replace(Time(),":",""),4)%\>

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

## #18 — Erik Juhlin, 2005-12-09T08:41Z

Många olika lösningar i den här tråden. Men jag anser att hemmabyggena i den här tråden står sig ganska dåligt mot en riktig guid.

Antingen skapar man den direkt i databasen eller använder en funktion.

```
Function GetGuid()
	Dim objTypeLib, sGuid
	Set objTypeLib = Server.CreateObject("Scriptlet.TypeLib")
	sGuid = objTypeLib.Guid
	Set objTypeLib = Nothing
	GetGuid = Left(sGuid, Len(sGuid) - 2)
End Function
```

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

## #19 — nitro2k01, 2005-12-09T08:48Z

En annan lösning är att använda en saltad md5 på deagnes datum och tid. Pseudokod, ej ASP!

```
kod = md5(getTime() & "blabla")
' Ska det vara 10 tecken:
kod = left(md5(getTime() & "blabla"), 10)
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/5546-slumpa-bokstäver-siffror
