Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Slupma utan återlägg i vb??

Postades av 2001-10-03 15:30:00 - Anders Björk, i forum visual basic - allmänt, Tråden har 10 Kommentarer och lästs av 614 personer

Tjena!
Hur gör man om man tex vill slumpa fram 10 tal utan att få några dubbletter. om man slumpar så att samma siffror kan komma flera gånger så är det ju bara någon form av for-loop, men hur gör man om man vill slumpa utan "återlägg"


Svara

Sv: Slupma utan återlägg i vb??

Postades av 2001-10-03 15:46:00 - Niklas Jansson

En slumpfunktion kan aldrig bli riktig slump.
Slumpen som fínns innbyggd är dock tillräcklig för de program man gör i VB.

Att säga "utan dubletter" är lite dumt. Det beror på vad du menar. Om det är ett visst antal heltal du vill ha så är dubletter helt logiskt. Om du menar flyttal är det högst ovanligt med dubletter.
Om du menar att du exempelvis vill blanda en kortlek finns bättre sätt.

Ett sätt att få bort dubletter kan annars se ut så här:
<code>
Dim i as Integer, j as Integer
Dim Tal (1 to 20) as Integer
Dim Fel as Boolean
Randomize

For i=1 to 20
Do
Tal(i) = Rnd*20 + 1
Fel=False
For j=1 to i
If Tal(i)=Tal(j) Then Fel=True
Next j
Loop While Fel
Next i
</code>

Hoppas det hjälper!

/Niklas Jansson


Svara

Sv: Slupma utan återlägg i vb??

Postades av 2001-10-03 16:50:00 - Anders Björk

Hänger inte riktigt med på det svaret. Grejen är den att jag skall slumpa fram 10 tal som sedan skall placeras ut på 10 st commandbutton och det får inte vara samma siffra på någon knapp. Hur gör jag då? (Jag är ganska grön i vb)


Svara

Sv: Slupma utan återlägg i vb??

Postades av 2001-10-03 18:39:00 - Emma Magnusson

Hej

Bestäm vilket min och maxvärde du vill slumpa talen inom.
Använd dig av en array av knappar(annars fungerar inte följande kod)

Har inte testat koden men den bör se ut ungefär som följer för att slumpa tal till dina tio knappar inom valfritt intervall.

//Emma

<code>
Dim i as Integer, j as Integer
dim min as integer, max as integer
Dim finns as Boolean
dim raknare as integer
Randomize

min = 10
max 100
raknare = 1

Dim Tallista (min to max) as Integer 'skapar en array som kommer att hålla i dina tal

do
Tal = Rnd*max + min 'slumpar fram ett tal i intervallet min - max
finns = false 'utgår från att det framslumpade talet inte finns

For j=min to i 'går igenom din lista med tal
If Tal=Tallista(j) Then
Finns=True 'om talet finns med i lista sätts finns till true
Next j
if not finns then 'om talet inte fanns i listan
raknare = raknare + 1
tallista(i) = tal
command(raknare) = tal
end if
Next i
loop until raknare = 10 'görs tills alla dina 10 knappar fått en siffra
</code>


Svara

Sv: Slupma utan återlägg i vb??

Postades av 2001-10-03 21:09:00 - Peter Jansson

>For j=1 to i
ska väl vara:
For j=1 to i-1


Svara

Sv: Slupma utan återlägg i vb??

Postades av 2001-10-03 21:14:00 - Peter Jansson

Ser tillkrånglat ut.
Dessutom, har man följande kod,
...
> For j=min to i 'går igenom din lista med tal
...
> Next i

så borde det väl finns ett
For i=...
någontsans, eller?


Svara

Sv: Slupma utan återlägg i vb??

Postades av 2001-10-04 08:42:00 - Emma Magnusson

Ber om ursäkt. Tog Fredriks kod och gjorde om lite grand.

For j=min to i ska vara
For j = min to max

och

next i ska strykas

//Emma


Svara

Sv: Slupma utan återlägg i vb??

Postades av 2001-10-04 08:50:00 - Peter Holm

Hej här har du ett förslag som jag tror du kommer bli nöjd med. Det använder
ett collectionobjekt för att lagra talen i. Med hjälp av key-attributet kan
man hålla reda på om ett tal redan existerar i din collection. Finns inte
talet så läggs detta till. När loopen är klar har du en collection av tio olika
tal i slumpvis ordning. Det är bara att loopa din collection och plocka ut
talen i önskad ordning.

Private Sub Command1_Click()
Dim slumpTal As New Collection
Dim slump As Integer
On Error Resume Next '// Slå av felhantering
Do
slump = Int(10 * Rnd) '// Slump 0-9
If slumpTal.Item(CStr(slump)) Is Nothing Then '// Kolla om talet finns i collection
slumpTal.Add Item:=slump, Key:=CStr(slump) '// Om inte så lägg till talet
End If
Loop Until slumpTal.Count = 10 '// Loopa tills vi fått tio tal
On Error GoTo 0 '// Slå på felhantering
End Sub


/peterh


Svara

Sv: Slupma utan återlägg i vb??

Postades av 2001-10-04 17:59:00 - Niklas Jansson

>Ber om ursäkt. Tog Fredriks kod och gjorde om lite grand.

Fredriks?? Nåja...

Om det är ett visst antal heltal gillar jag det här sättet bättre:

<code>
Dim Talen(1 To 10) As Integer
Dim i As Integer
Dim Temp As Integer
Dim Slump as Integer

For i=1 to 10
Talen(i)=i
Next i

For i=1 to 10
Slump=Rnd*10+1

'Swappa talen
Temp=Talen(i)
Talen(i)=Talen(Slump)
Talen(Slump)=Temp
Next i
</code>

På det här sättet behöver man inte kolla igenom listan varje gång, och den är garanterat blandad. Om man sedan vill blanda den mer behövs bara den sista biten.

/Niklas Jansson


Svara

Sv: Slupma utan återlägg i vb??

Postades av 2001-10-04 18:41:00 - Emma Magnusson

Usch förlåt Niklas *skäms*

Satt och var lite sömnig... gick upp lite tidigare än jag borde tydligen...

//Emma - ber Niklas om ursäkt än en gång!


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 627
27 953
271 710
926
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies