Gå til innhold

[Løst]Hvordan få et random nummer mellom to tall?


Anbefalte innlegg

Videoannonse
Annonse

Du sier ikke hva slags tall, men se om dette får deg i gang:

 

	Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
	Label1.Text = Tilfeldig(25, 50)
End Sub

Function Tilfeldig(ByVal iMin As Int32, ByVal iMax As Int32) As Int32
	Randomize()
	Tilfeldig = CInt(iMin + (Rnd() * (iMax - iMin)))
End Function

 

Beste hilsen Harald

Lenke til kommentar
  • 3 uker senere...
Så hvis VB suger, så gjør du det samme? :wee:

 

 

Edit: Uansett synes jeg ikke det er en god unskyldning for å drive med, og ikke minst lære bort dårlig programmeringsskikk ;)

 

Jeg synes faktisk ikke man skal sette seg på sin høye hest og beskylde noen for å drive dårlig programmeringsskikk.

 

Det noen mener er dårlig programmeringsskikk kan være helt akseptabelt for andre.

 

Det er noen regler som man bør holde når man programmerer.

 

1. KISS (Keep it stupid simpel)

2. YAGNI (You ain't gonna need it)

 

vb.net er faktisk et fantatisk programmeringsspråk til sitt bruk og har noen egenskaper som jeg mange ganger skulle ønske C# hadde.

 

I dag driver mange "gode/erfarne" med polygot programmering. Det betyr kort og godt at de i prosjekter blander språk for å utnytte de ulike språkenes egenskaper for å uttrykke intensjonen i kode på best mulig måte, samtidig som de utnytter styrkene til de språkene på en best mulig måte.

 

Ofte ser jeg at folk bruker vb.net til å gjøre xml-greier som det er overlegent på, C# har den overordna programstrukturen, mens Boo brukes for å lage et Domene spesifikt språk (DSL).

 

Når det gjelder konkurransen her om å skrive kortest mulig kode så er det ikke nødvendig en god ting, da det som oftest er viktigere å gjøre koden lettlest/forståelig for de som skal lese den. Er man stolt av å skrive kryptisk kode så er man som regel uerfaren og vil håpentligvis etter hvert lære seg å skrive god kode.

Endret av BennyXNO
Lenke til kommentar
Så hvis VB suger, så gjør du det samme? :wee:

 

 

Edit: Uansett synes jeg ikke det er en god unskyldning for å drive med, og ikke minst lære bort dårlig programmeringsskikk ;)

 

Jeg synes faktisk ikke man skal sette seg på sin høye hest og beskylde noen for å drive dårlig programmeringsskikk.

 

Det noen mener er dårlig programmeringsskikk kan være helt akseptabelt for andre.

 

Det er noen regler som man bør holde når man programmerer.

 

1. KISS (Keep it stupid simpel)

2. YAGNI (You ain't gonna need it)

 

vb.net er faktisk et fantatisk programmeringsspråk til sitt bruk og har noen egenskaper som jeg mange ganger skulle ønske C# hadde.

 

I dag driver mange "gode/erfarne" med polygot programmering. Det betyr kort og godt at de i prosjekter blander språk for å utnytte de ulike språkenes egenskaper for å uttrykke intensjonen i kode på best mulig måte, samtidig som de utnytter styrkene til de språkene på en best mulig måte.

 

Ofte ser jeg at folk bruker vb.net til å gjøre xml-greier som det er overlegent på, C# har den overordna programstrukturen, mens Boo brukes for å lage et Domene spesifikt språk (DSL).

 

Når det gjelder konkurransen her om å skrive kortest mulig kode så er det ikke nødvendig en god ting, da det som oftest er viktigere å gjøre koden lettlest/forståelig for de som skal lese den. Er man stolt av å skrive kryptisk kode så er man som regel uerfaren og vil håpentligvis etter hvert lære seg å skrive god kode.

 

Det er ingenting VB.NET er bedre på en C#, jeg kan ikke komme på en eneste ting jeg savner fra VB tiden min... annet en C#.

Hverken VB.NET eller C# er DSL språk, og det er derfor ingen fordeler med å bruke C# som "overodnet programstruktur" kontra "xml"

Jeg går utifra at dette har mer med utviklernes språksmak mer enn språkenes nytteområder.

 

Degeim er en gammel VB.NET utvikler, og jeg har holdt på med VB siden versjon 3. Jeg kan ikke tenke meg én eneste ting VB gjør bedre en C#.

 

Manfred og Degeim har rett, VB oppfordrer absolutt til dårlig skikk. Blant annet kan det med at den automatisk konverterer skape problemer med boxing/unboxing fordi det er uklart hva kompilatoren velger å gjøre. VB godtar mye tvetydig kode.

Lenke til kommentar

En ting kan vi jo være enig i, vb.net og c# produserer eksakt samme msilkode selv om de bruker hver sin syntax for å uttrykke det som til slutt gjør det samme.

 

At du ikke ser nytten i noe av funksjonaliteten til vb.net for å håntere xml som er mye lettere og mer intuiativt kan bare bety at du ikke har satt deg inn i dette og muligens lever på gamle fordommer etter vb versjon 3.

 

Problemet til vb.net er at det ofte brukes av selvlærte guttunger som innfallsport til programmeringsverden. Når disse karene stiger over til eliteverden og begynner med C# ser de ofte ned på folk som skriver vb.net kode. I tillegg lærer folk som begynner med vb.net vranglære fra lærebøker, eksempler fra MS og fra skoler. Dataset er verdens beste eksempel, nyttig til sitt bruk, men ofte offer for overbruk og folk læres opp til å misbruke det, særlig fra Microsoft sin side. Heldigvis finnes det grupperinger hos Microsoft som har skjønt det, blant annet P&P gjengen.

 

Det er stor forskjell fra at et språk tillater dårlig skikk og at det suger. Når man har så bastante meninger om et språk forteller det mer om en selv en om språket.

Lenke til kommentar

Men jeg skal personlig innrømme at bruk av gamle vb funksjoner og vb's alternative "return" mulighet skjærer meg i øyet

 

Et veldig godt eksempel på det:

Function Tilfeldig(ByVal iMin As Int32, ByVal iMax As Int32) As Int32
	Randomize()
	Tilfeldig =CInt(iMin + (Rnd() * (iMax - iMin)))  
End Function

 

Bruk av Tilfeldig = i steden for return gjør lesbarheten vanskeligere.

 

Bruk av CInt forvirrer, da man ofte er lettere med en gang for noen som ikke er like stødig i vb å lese Convert.ToInt32(value). Er man i tillegg vant til HN, tror man CInt er en klasse.

Endret av BennyXNO
Lenke til kommentar

Jeg ser at du også er forvirret rundt størrelsen på Integer siden du bruker Int32? Integer var 16-bit i Classic VB, men er 32-bit i VB.NET og nyere.

 

Public Property Name() As String
 Get()
Return m_name
 End Get
 Set(ByVal value As String)
m_name = value
 End Set
End Property

 

public string name { get { return m_name; } set { m_name = value; } }

 

En av disse er strømlinjeformet, og den andre inneholder masse informasjon som er mer formelt enn nyttig.

Endret av GeirGrusom
Lenke til kommentar
Jeg ser at du også er forvirret rundt størrelsen på Integer siden du bruker Int32? Integer var 16-bit i Classic VB, men er 32-bit i VB.NET og nyere.

 

Hvorfor påpeker du dette? Min eksempelkode er hentet rett fra innlegg nr 2. For meg er ikke dette en pissekonkurranse. Jeg har ikke sagt at du er dårlig til å programmere eller noe som helst i negativ retning. Du har mange gode innlegg under Programmering, så det er kjipt at du bruker energien din i negativ retning når du føler noen tråkker på tærne dine.

 

Jeg er ikke uenig at konstruksjonene til vb.net i denne versjonen heller ikke er optimalt. Autoproperties kommer i neste versjon av vb.net. Heldigvis finnes det to verktøy som jeg kjenner til, Refactor! Pro og Resharper som er helt fantastisk og hjelper til å kutte tiden det tar å skrive kode både i vb.net og C#. For tiden bruker jeg Resharper.

 

For å fjerne all tvil, C# er mitt foretrukne programmeringsspråk.

Lenke til kommentar

Beklager at jeg ikke så at dette var fra post 2, min feil.

 

Når det gjelder refactor så er det ikke hvor lang tid det tar å skrive koden som er poenget, men hvor lang tid den tar å lese. Hele poenget mitt er at VB lager ikke en veldig lesbar kode, det skal relativt mye mysing til før en faktisk ser hva koden gjør for noe, og dette skaper ihvertfall problemer dersom du kikker igjennom koden som noen andre har skrevet.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...