Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse
Hvis en kan unngå en matematisk usansynlighet, og gjøre det til en umulighet, er det alltid det beste valget.

Matematiske usannsynligheter har en tendens til å treffe deg i trynet når kunden får kludre programmet med pølsefingrene sine.

 

Godt poeng (for å ha noe semi-relevant til tråden som sådan)..

 

 

Og det skrives "... (de var så) glade", med mindre du bruker De som høflig form, da blir det ".. De var så glad"..

Lenke til kommentar

Hei igjen.

Jeg har lekt litt med forslagene deres og begynner å forstå dem. Det jeg leker med nå er å generere alle lottorekkene, mer enn 5 mill.

Tenker da lottorekkene i 7 posisjoner hvor pos1 = 1 <=28, pos2 = 2<=29, pos3 = 3<=30 osv. Siden det ikke skal være duplikate tall, må pos2 være 1 større enn pos1 osv...

Tenker noe slikt:

 

for(i=1; i<=28; i++)

pos1.Add(i)

for(j=2; j<=29; j++)

pos2.Add(j) // Denne fungerer ikke, Nesting kode tatt fra vb.

Noen som kan lede meg i riktig retning?

Lenke til kommentar
byte[] tall = new byte[7];

// Startert med 1,2,3,4,5,6,...x
for (byte i = 0; i < tall.Length; i++) tall[i] = (byte)(i+1);

while (true)
{
// Hvis tallet til høyre er for høyt, sett det til 1, og øk tallet forran
for (int i = tall.Length-1; i >= 1; i--)
	if (tall[i] == 33)  // vanlig lotto 1-32 ?
	{
		tall[i] = 1;
		tall[i - 1]++;
	}

// Ferdig ?
if (tall[0] == 33)
	break;

// Er tallene unike?
bool UniuqeNumbers = true;
for (int i = 0; i < tall.Length; i++)
	for (int j = 0; j < tall.Length; j++)
		if (i != j && tall[i] == tall[j])
			UniuqeNumbers = false;

// Print
if (UniuqeNumbers)
{
	for (int i = 0; i < tall.Length; i++)
		Console.Write(tall[i] + " ");
	Console.WriteLine();
}

// Øker siste talled med 1
tall[tall.Length-1]++;
}

Endret av jorn79
Lenke til kommentar
{

for (int i = 0; i < tall.Length; i++)

richTextBoxText.Text = tall.ToString();

}

 

// Øker siste talled med 1

tall[tall.Length-1]++;

}[/code]

Takk for koden Jorn79.

Jeg ønsker å vise disse rekkene i richTextBox. Er det riktig å plasere den i steden for Consol? Grunnen til spr er at koden kjører som bare det i Consol, men i Windows står det" Formen svarer ikke". Er det fordi rekkene blir lagt til etter at koden er kjørt?

 

Edit: Ser at tallrekken i consol er feil. Gir bla: 1 2 7 8 3 31 24. Det er vel gunnen til at den bruker lang tid. Pos4 går helt til 32, men skal slutte på 31. Siste rekke skal bli 28 29 30 31 32 33 34

Endret av kjaa
Lenke til kommentar
Edit: Ser at tallrekken i consol er feil. Gir bla: 1 2 7 8 3 31 24. Det er vel gunnen til at den bruker lang tid. Pos4 går helt til 32, men skal slutte på 31. Siste rekke skal bli 28 29 30 31 32 33 34

 

Det er kun fordi jeg ikke har spilt nok lotto. Du får fikse koden selv :-P

Lenke til kommentar

Denne koden genererer alle lottokombinasjonene.

Finnes det noen mulighet å overføre innholdet i consolen til ett tekst dokument? Notisblokk feks.

 

static void Main(string[] args)

{

for (int i = 1; i <= 28; i++) // pos1

{

for (int j = i + 1; j <= 29; j++) // pos2

{

for (int k = j + 1; k <= 30; k++)// pos3

{

for (int l = k + 1; l <= 31; l++)// pos4

{

for (int m = l + 1; m <= 32; m++)//pos5

{

for (int n = m + 1; n <= 33; n++)//pos6

{

for (int o = n + 1; o <= 34; o++)//pos7

{

Console.WriteLine("{0} {1} {2} {3} {4} {5} {6}", i, j, k, l, m, n, o);

 

}

Lenke til kommentar

Min gode Manfred. I en bok jeg leste for flere vintre siden, om VB.NET 2001, brukte de TextWriter.

 

Derfor bruker jeg det.

 

 

Om dette er inkorrekt vet jeg ikke noe om, da VS ikke har gitt meg så mye som en eneste advarsel enda.

Endret av ze5400
Lenke til kommentar

Det er ikke inkorrekt, det er bare unødvendig.

 

Grunnen er ganske enkelt at TextWriter er en abstrakt klasse som StreamWriter arver fra.

 

Så "TextWriter writer = new StreamWriter(...) as TextWriter" er bare litt krøkkete.

 

Jeg har sett samme eksempelet selv, men jeg aner ikke hvorfor de har gjort det sånn.

Endret av GeirGrusom
Lenke til kommentar
Textwriter?

 

EDIT:

 

using System.IO;
...
		TextWriter Writer = new StreamWriter(@"");
		Writer.WriteLine("");
		Writer.Flush();
		Writer.Dispose();

 

Takk for tipset. Det tok ca 2-3 sek å lage fila mot 10-12 min i console. Fila ble forøvrig 98 mb stor.

Lenke til kommentar
Det er ikke inkorrekt, det er bare unødvendig.

 

Grunnen er ganske enkelt at TextWriter er en abstrakt klasse som StreamWriter arver fra.

 

Så "TextWriter writer = new StreamWriter(...) as TextWriter" er bare litt krøkkete.

 

Jeg har sett samme eksempelet selv, men jeg aner ikke hvorfor de har gjort det sånn.

 

Okay. Skal slutte å bruke det siden Manfred sikkert dreper en selunge for hver gang jeg bruker det :tease:

 

 

Takk for tipset. Det tok ca 2-3 sek å lage fila mot 10-12 min i console. Fila ble forøvrig 98 mb stor.

 

Bare hyggelig :)

 

Tør jeg spørre hva du skal med så mange tall?

Lenke til kommentar
Tør jeg spørre hva du skal med så mange tall?

 

Ble litt gira når jeg kikket på løkker. Jeg syntes statistikk er spennende og har alle lottoresultatene lagret siden 19.04.1986. Jeg ble forøvrig overrasket av hvor fort det gikk å skrive til tekst. Det neste prosjektet er å lage dette i form og vise resultatet i en listebox. Tenkte å se mer på koden som Jørn postet. Selv om den går i en evig løkke, regner jeg med at mye ligger der. Noe sier meg at dette kan gjøres på flere måter og hastigheten på genereringen er også interessant. Ett lottoprogram fra Scantips,kodet i Delphi, genererer 5.379.616 lottorekker på ca 4-7 sek.

Lenke til kommentar
  • 2 uker senere...

Legger ved hele koden fordi som vil leke. Denne koden har ett problem. Jeg forsøker å telle antall rekker i tillegg. Denne er den son gir minst feil. Noen som har forslag?

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

 

namespace ConsoleApplication1

{

class Program

{

 

private const String filpath = "C:\\Lotto\\";

 

 

static void Main(string[] args)

{

string Rekkenr;

while (Rekkenr < 5379616)

 

string text = null;

StreamWriter writer = new StreamWriter(@filpath + "lotto.txt", false);

for (int i = 1; i <= 28; i++) // pos1

for (int j = i + 1; j <= 29; j++)//pos2

for (int k = j + 1; k <= 30; k++)//pos3

for (int l = k + 1; l <= 31; l++)//pos4

for (int m = l + 1; m <= 32; m++)//pos5

for (int n = m + 1; n <= 33; n++)//pos6

for (int o = n + 1; o <= 34; o++)//pos7

{

text = Rekkenr + "~" + 1 + "~" + i + "~" + j + "~" + k + "~" + l + "~" + m + "~" + n + "~" + o + "\n";

writer.Write(text);

}

writer.Close();

}

}

}

Endret av kjaa
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...