2011

Mar

21

Av

FileMaker kan skapa slumptal mellan 0 och 1 med beräkningsfunktionen Random. Jag har tidigare skrivit om hur man kan göra ett slumpmässigt urval med hjälp av funktionen, denna gång ska jag visa hur man kan göra en slumpmässig sekvens av nummer utan dubbletter. Om du någon gång spelat på Lotto vet du att man ska välja 7 nummer av 35. Att pricka in samtliga 7 rätt är en chans på ungefär 6,5 miljon. Vissa använder sina turnummer, andra låter FileMaker välja numren. Vilket som är bäst avgör du själv! Jag har aldrig vunnit :(

Jag har valt att göra funktionen med hjälp av manus. (Har du FileMaker Pro Advanced går det också att göra med egna funktioner.)

Manuset består av 2 steg. Det första steget är att skapa alla tillgängliga nummer mellan 1 och 35. Dessa nummer sparas i en variabel som jag kallar $lista. Genom att dra ett nummer från listan och göra listan mindre för varje gång får jag automatiskt 7 unika nummer.

Att skapa en lista med nummer från 1 till 35 är lätt:

Ange variabel [$lista; Värde: "1"]
Loop
   Ange variabel [$lista; Värde: $lista & "¶" & ValueCount($lista)+1]
   Exit Loop If [ValueCount($lista) = 35]
End Loop

Det hade förstås gått lika lätt att skriva in alla värden från 1 till 35 direkt i variabeln utan att göra en loop. Tänk bara på att värdena ska stå på var sin rad i listan. Det är därför jag lägger in radmatning (“¶) mellan värdena.

I nästa steg skapar jag först ett slumptal mellan 1 och antal värden i $lista. Från början innehåller $lista 35 värden, men antalet minskar med 1 för varje nummer som används i lottoraden. Slumptalet använder jag sedan för att hämta ett värde från $lista till lottoraden. För att inte kunna välja samma värde igen tar jag sedan bort värdet från $lista genom att sätta ihop alla värden mindre än slumptalet med alla värden större än slumptalet. Loopen körs 7 varv för att få fram 7 tal till lottoraden.

Ange variabel [$lottorad; Värde: ""]
Loop
   Ange variabel [$slumptal; Värde: Int(Random*ValueCount($lista) + 1]
   Ange variabel [$lottorad; Värde: $lottorad & GetValue($lista;$slumptal) & "¶"]
   Ange variabel [$lista; Värde: LeftValues($lista;$slumptal-1) & 
      MiddleValues($lista;$slumptal+1;99999)]
   Exit Loop if [ValueCount($lottorad) = 7]
End Loop

Det sista steget i manuset är att tilldela lottoraden till ett fält i FileMaker-databasen så att den sparas.

Tilldela fält [Lotto:Rad; $lottorad]
Verkställ post []

Lycka till!

Skriv en kommentar

  • (will not be published)
  • six + 2 =

Läs också: