Randomize Timer   otázka

VB.NET, .NET

Ahoj, dělám na projektu bankovní centrály. (je to školní projekt, jenže zadání zadané učitelem bylo moc jednoduche, tak sem si ho doplnil o registraci, neco jako databazi, prihlaseni) prave resim registraci, mam vsechno hotove. Jen mam problem v generovani Nahodnych cisel.. Potrebuju vygenerovat naprosto nahodne 9-ti místné číslo, které by zastupovalo číslo bankovního účtu. použil sem metodu RND(), jenže ta je generuje stále dokola ve stejném pořadí. Když sem hledal na internetu dočetl jsem se o nějakem RANDOMIZE TIMER přesné znění:

Private Sub Command1_Click()

  Randomize Timer
  Text1.Text = Int(Rnd * 100) + 1
  
End Sub

Jenže to mi nějak VB nebere..

Verze programu: Microsoft Visual Basic 2010 Express

děkuji za odpověď

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Randomize je záležitost VB6, .NET Framework používá jiné mechanismy generování náhodných čísel:

Dim generatorNahory As New Random()
Dim nahodneCislo = generatorNahory.Next(1,100)

Při používání pseudonáhody v .NETu si dejte pozor na to, abyste například v cyklu nevytvářel v každém průchodu novou instanci generátoru (New Random) ale abyste ji vytvořil a dosadil už nad cyklem, v opačném případě by Vám to totiž házelo stále stejné čísla:

' Toto vyhodí třeba tři dvojky
For i = 0 To 2
    Dim r As New Random()
    MsgBox(r.Next(1,5))
Next
' Toto je správně, tři pseudonáhodná čísla
Dim r As New Random()
For i = 0 To 2
    MsgBox(r.Next(1,5))
Next
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dekuji moc funguje to :) tim bych mel jeden blok projektu dokoncen, velmi ste mi pomohli :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste to takto...

    Public Function Generate() As String
        Dim Numbers As String = "1234567890"
        Dim FinalLength As Integer = Nothing
        Dim GenerateA As String = Nothing

        Randomize()

        For HalfLength = 1 To 9

            FinalLength = CInt(Int(Rnd() * 10) + 1)

            GenerateA = GenerateA & Mid(Numbers, FinalLength, 1)

        Next

        Return GenerateA
    End Function

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Panebože co to je?!

nahlásit spamnahlásit spam -1 / 3 odpovědětodpovědět

Souhlasím, je zbytečné vytvářet další spatlaninu navíc, když .NET obsahuje třídu Random.

A proč tu funkci máte jako string?? Když vrací čísla?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback