Gå til innhold

Anbefalte innlegg

Hei.

Etter mye søking og mekking har jeg fått fram denne koden:

 

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

Random m_random = new Random();

 

int[] selectedNumbers = new int[7];

 

private void Button1_Click(object sender, EventArgs e)

{

// For vært array medlem, tildeles ett random nummer

for (int numberCount = 0; numberCount < selectedNumbers.Length; numberCount++)

{

int newNumber = m_random.Next(1, 34);

 

for (int i = 0; i < numberCount; i++)

{

if (newNumber == selectedNumbers)

{

newNumber = m_random.Next(1, 34); // Tildeler ett nytt nr.

 

continue; // Tester igjen

}

}

 

selectedNumbers[numberCount] = newNumber;

}

 

int[] NumbersArray = new int[7];

 

for (int x = 0; x < NumbersArray.Length; x++)

{

NumbersArray[x] = selectedNumbers[x];

}

 

// Sorterer

Array.Sort(NumbersArray);

 

// Plasserer tallen i teksbokser.

textBox1.Text = NumbersArray[0].ToString();

textBox2.Text = NumbersArray[1].ToString();

textBox3.Text = NumbersArray[2].ToString();

textBox4.Text = NumbersArray[3].ToString();

textBox5.Text = NumbersArray[4].ToString();

textBox6.Text = NumbersArray[5].ToString();

textBox7.Text = NumbersArray[6].ToString();

 

Denne velger 7 vilkårlige tall og sorterer dem.

Jeg kom fram til denne etter å ha lest kap 8 i "Murach's C# 2008 og gransket en liknende javakode.

Må innrømme at jeg ikke skjønner hele koden, derfor dette innlegget. Det jeg nå ønsker er å generer opp alle lottorekkene og vise(helst lagre)resultatet i en liste eller texbox eller noe bedre. Jeg gjorde dette med for løkker i Delphi for mange år siden. Det gikk, men tok veldig lang tid.(uegnet)

Noen som vet råd?

 

[Edit] Videre testing viser at det av og til blir duplikater.

Endret av kjaa
Lenke til kommentar
Videoannonse
Annonse

Hvis du ikke vil ha duplikater er mitt forslag at du lager en array med alle mulige tall du kan trekke (hvordan du sorterer dem er forsåvidt opp til deg selv), og har en int som sier hvor mange tall det "er igjen" i arrayen. for hver gang du trekker et tall så genererer du et tilfeldig tall mellom 0 og denne int verdien og henter ut den indexen i arrayen...etter du har hentet ut tallet erstatter du det i arrayen med hva det nå enn er som ligger sist i arrayen og reduserer int verdien med 1.

 

Bare et forslag...

Lenke til kommentar

Selv hadde jeg gjort noe slikt:

 

			List<int> Numbers = new List<int>();

		Random Rand = new Random();

		for (; Numbers.Count < 7; )
		{
			int CRand = Rand.Next(1, 34);
			if (!Numbers.Contains(CRand))
			{
				Numbers.Add(CRand);
			}
		}

 

 

EDIT: Fookno.

Jeg var for sen :p

 

 

EDIT2: Fiksa rar setning. (Takk manfred)

Endret av ze5400
Lenke til kommentar
Selv hadde jeg gjort noe slikt:

 

			List<int> Numbers = new List<int>();

		Random Rand = new Random();

		for (; Numbers.Count < 7; )
		{
			int CRand = Rand.Next(1, 34);
			if (!Numbers.Contains(CRand))
			{
				Numbers.Add(CRand);
			}
		}

 

 

EDIT: Fookno.

Jeg var for sen :p

 

 

EDIT2: Fiksa rar setning. (Takk manfred)

Selvsagt litt pirkete, men teoretisk kan dette føre til en evig løkke.

 

Invictus forslag er nok derfor det beste, men som sagt, dette er veldig teoretisk da ;-)

Lenke til kommentar

public List<int> Generate()
{
List<int> numbers = new List<int>(34);
List<int> selectedNumbers = new List<int>();
Random generator = new Random(DateTime.Now.Millisecond);

for (int i = 1; i < 35; i++)
numbers.Add(i);

for(int i=0;i<7;i++)
{
int x = generator.Next(0,numbers.Count);
selectedNumbers.Add(numbers[x]);
numbers.RemoveAt(x);
}

return selectedNumbers;
}

 

Fordelen her er at du slipper å teste om tallet er trukket allerede. Dvs løkken vil alltid bare kjøre 7 ganger. Downside er naturlig nok at du må bygge opp listen med tall du kan velge fra først.

Endret av The Jackal
Lenke til kommentar
Selv hadde jeg gjort noe slikt:

 

			List<int> Numbers = new List<int>();

		Random Rand = new Random();

		for (; Numbers.Count < 7; )
		{
			int CRand = Rand.Next(1, 34);
			if (!Numbers.Contains(CRand))
			{
				Numbers.Add(CRand);
			}
		}

 

 

EDIT: Fookno.

Jeg var for sen :p

 

 

EDIT2: Fiksa rar setning. (Takk manfred)

 

Problemet med denne er at koden i teorien kan kjøre "evig" hvis den trekker samme tallet hver gang. Det slipper man med løsningen jeg beskrev ovenfor.

Lenke til kommentar

Gadd du lese tråden engang? :p

 

Om du ser noen poster opp er det en som har påpekt det alt. (Noe jeg forsåvidt var klar over, men da det er forsjell mellom teori og praksis er det ikke alle hensyn det er noen vits i å ta engang.)

Lenke til kommentar
Gadd du lese tråden engang? :p

 

Om du ser noen poster opp er det en som har påpekt det alt. (Noe jeg forsåvidt var klar over, men da det er forsjell mellom teori og praksis er det ikke alle hensyn det er noen vits i å ta engang.)

 

Ahh sorry. Missa den ja. Men husk at selv om å trekke samme tall hver gang er lite sannsynlig så øker sannsynligheten for at det skjer jo flere tall man allerede har trukket.

Endret av invictus
Lenke til kommentar

Dere programmerere er så glade i matematikk :tease:

 

Når jeg ser på teoretisk stoff tenker jeg: "Bah. Det var det med teori og praksis. La det skure" :p

 

 

Når jeg først skriver i den delen av forumet hvor noen av de mest beleste folkene på hele diskusjon.no holder til;

 

Hva blir riktig når man snakker om folk i flertall (ref. første setningen min i dette innlegget)?

 

Jeg blir mener på at en gruppe personer er f.eks "(de er så) glade", og ikke "(de er så) glad", men jeg ser ikke mange som skriver/snakker på samme måte som meg, så her er det kansje jeg som er helt på bærtur?

Lenke til kommentar
Jeg blir mener på at en gruppe personer er f.eks "(de er så) glade", og ikke "(de er så) glad", men jeg ser ikke mange som skriver/snakker på samme måte som meg, så her er det kansje jeg som er helt på bærtur?

 

Vi programmerere er nok som regel flinkere i engelsk enn norsk, siden de meste av lesestoffet er på engelsk....

 

Men vi er veldig flinke til å finne riktig sted å spørre spørsmål....

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...