Seite 1 von 2

Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 09:24
von Chaosina
Hej!

Ich versuche ein 5x5 großes Bingofeld mit Zahlen von 1-50 zu erstellen und bin schon ganz begeistert über die Zufallszahl-Funktion. Allerdings doppeln sich immer wieder Zahlen. Ich habe schon hier im Forum gestöbert und auch schon ausprobiert, was andere empfohlen haben. Aber irgendwie klappt es nicht wirklich, wie es soll.

Danke für eure Hilfe!!!

Chaosina

Re: Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 10:27
von Stephan
Aber irgendwie klappt es nicht wirklich, wie es soll.
Schwer zu sagen warum das so ist, ohne zu wisen um welche Beiträge es überhaupt geht.


Gruß
Stephan

Re: Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 10:37
von Chaosina
Ich dacht ja, wir suchen einfach neu nach einer Lösung, da die anderen ja nicht funktioniert haben oder ich vielleicht einfach was falsch gemacht hab.

http://www.oooforum.de/viewtopic.php?f= ... 4f#p144123
Das hier hab ich ausprobiert, aber wenn ich es auf mehrere Spalten (5x5) ausdehne, klappt es nicht, dh es sind Zahlen doppelt

Re: Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 10:45
von bst
Auch Hallo,

mein Beispiel von dort funktioniert. Es schreibt m unterschiedliche Zufallszahlen zwischen 1 und n in die Spalte D (=3) ab Zeile 1.

cu, Bernd
--

Code: Alles auswählen

Sub x()
   const n = 50
   const m = 6
   dim i as integer, j as integer
   dim ar(1 to n) as integer
   dim intZufall as integer
   dim ActiveSheet as object
   
   ActiveSheet = ThisComponent.getCurrentController.getActiveSheet
   for i = 1 to n
      ar(i) = i
   next
   
   i = n
   for j = 0 to m-1
      intZufall = int(i * rnd() + 1)
      ActiveSheet.getCellByPosition(3, j).Value = ar(intZufall)
      ar(intZufall) = ar(i)
      i = i - 1
   next
End Sub


Re: Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 10:49
von Chaosina
Und wie schaffe ich es, dass er mir unterschiedliche Zahlen in die Felder von A1 bis E5 schreibt? :)
Ich weiß, ich könnt einfach die ersten zwei Zeilen von dir kopieren, aber ich brauch ja nicht nur 1 Bingo-Feld sondern 20 und dann wird das ganze unübersichtlich. Ich hab auf eine Funktion gehofft, die man am besten gar net sieht in der Tabelle

Re: Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 12:03
von bst
Hi,

versuche das mal so. Selektiere 5*5 Zellen und schreibe dort die Matrixformel =BINGO() rein.

HTH, Bernd
--

Code: Alles auswählen

Function Bingo() as Variant
   const n = 50
   const m = 5
   dim i as integer, j as integer, x as integer, y as integer
   dim ar(1 to n) as integer
   dim intZufall as integer
   dim arOut(0 to m-1, 0 to m-1)
      
   for i = 1 to n
      ar(i) = i
   next
   
   x = 0
   y = 0
   i = n
   for j = 0 to m*m-1
      intZufall = int(i * rnd() + 1)
      arOut(x, y) = ar(intZufall)
      x = x + 1
      if x >= m then 
         x = 0
      	 y = y + 1
      endif
      ar(intZufall) = ar(i)
      i = i - 1
   next
   Bingo = arOut
End Function

Re: Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 12:05
von juetho
Chaosina hat geschrieben:Und wie schaffe ich es, dass er mir unterschiedliche Zahlen in die Felder von A1 bis E5 schreibt? :)
Die zweite Schleife wird aufgeteilt in zwei Schleifen: j von Startwert1 bis (Startwert1 + 4) und k von Startwert2 bis (Startwert2 + 4). getCellByPosition bekommt die Argumente j und k (statt 3 und j). Startwerte erwähne ich, weil du 20 Bereiche vorsehen willst; die Startwerte werden entweder aus der ersten Zelle, in der das Makro gestartet wird, übernommen oder per Dialog abgefragt. Jürgen

Oops, Bernd war schneller. Meine Antwort bezog sich auf seinen vorigen Code (nicht auf den letzten).

Re: Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 12:08
von Karolus
Hallo

per Pythonscript:

Code: Alles auswählen

from random import sample

context = XSCRIPTCONTEXT

def bingo(dummy=None):
    doc = context.getDocument()
    sheet = doc.Sheets.getByIndex(0) #erstes Blatt
    rrange= sheet.getCellRangeByPosition( 0, 0, 4, 4 )
    numbers = tuple( sample( range( 1, 51 ), 25 ) )
    rrange.setDataArray( (  numbers[:5],
                                numbers[5:10],
                                numbers[10:15],
                                numbers[15:20],
                                numbers[20:]))

Re: Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 19:36
von Chaosina
Hej!

Vielleicht hät ich dazu sagen sollen, dass ich mich eigentlich nicht wirklich auskenn :) Auf jeden Fall bin ich heillos überfordert mit euren Antworten, aber trotzdem Danke!

Chaosina

Re: Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 20:13
von bst
Hi Chaosina,

Du musst das als Matrixformel eingeben. Also zuerst einen Bereich aus 5 Zeilen und 5 Spalten selektieren, dann die Formel =BINGO() eintippen und dann nicht nur mit RETURN sondern mit STRG+SHIFT+RETURN bestätigen. Oder im letzten Schritt den Funktionsassistenten f(x) starten, unten links Matrix anwählen und dann OK klicken.

Der Code gehört in ein normales Modul in der Mappe.

Siehe Anhang.

HTH, Bernd

Re: Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 21:22
von Chaosina
Hej!
Danke für den Versuch, aber das Makro kommt nicht mit, oder falls ich was machen muss, dann weiß ich nicht genau was :)

Re: Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 22:01
von bst
Hi,

nimm in Calc Extras->Optionen->Sicherheit->Makro Sicherheit->Mittel. Dann öffne die Datei und beantworte die Frage mit "Makros aktivieren".

cu, Bernd

Re: Zufallszahlen für Bingo

Verfasst: Mo, 01.10.2012 22:04
von echo
Hallo zusammen,
wenn gewünscht, das geht auch ohne Makro

Ich hänge mal ein Beispiel an
lg Holger

Re: Zufallszahlen für Bingo

Verfasst: Di, 02.10.2012 00:49
von balu
Hallo Holger
wenn gewünscht, das geht auch ohne Makro
Es wäre wirklich schön wenn es ohne Makro funktionieren würde. Aber es funktioniert eben nicht ohne, wie ich ja selber schon mal leider feststellen musste. Auch deine Beispieldatei produziert früher oder später doppelte Zahlen. Wenn nicht bei der 2ten Ziehung, dann vielleicht bei der 5ten oder 20ten. Auf jeden Fall kommen die doppelten Zahlen.

Getestet unter WinXP. Mit OOo 3.2.1 und LO 3.5.5.3

Kann vielleicht sein das in Excel es zu keine doppler kommt, aber hier geht es ja um Calc und nicht um Excel. Das aber nur so nebenbei bemerkt.



Gruß
balu