Zufallszahlen mit Excel generieren

Neue Frage »

grybl Auf diesen Beitrag antworten »
Zufallszahlen mit Excel generieren
Ich suche Hilfe bei der Erstellung eines Programms in Excel, da ich in Excel nur wenig über die 0815-Sachen hinaus beherrsche. :P :P

Aufgabenstellung: Aus einem bestimmten Zahlenbereich (z.B. 0 bis 1000) soll eine bestimmte Anzahl (z.B.200) von Zufallszahlen ausgegeben werden, von denen keine gleich sein dürfen.

Bitte helft mir, mir fehlt der Plan. traurig
ChrisM Auf diesen Beitrag antworten »

Hi.
Generell würde die Formel für Zufallszahlen in Excel lauten:
=ZUFALLSZAHL()*(Obergrenze-Untergrenze)+Untergrenze
Für dein Beispiel also
=ZUFALLSZAHL()*1000
Wenn du nur ganze Zahlen haben möchtest, musst du das in ein RUNDEN(Wert;0) einbetten, also
=RUNDEN(ZUFALLSZAHL()*1000;0)
Du kannst die Formel dann 200 mal nach unten kopieren, in dem du zunächst das Kästchen mit der Formel makiert, dann in dem Kästchen unten rechts auf das kleine Quadrat klickst(der Cursor ist dann ein schwarzes Kreuz mit weißem Hintergrund statt umgekehrt) und dann, während du die Maustaste gedrückt hälst, einfach runterziehen.
Wenn ich die Hilfe richtig interpretiert habe, sollten eigentlich keine Zahlen doppelt auftreten. Falls dies doch der Fall sein sollte, fällt mir auch nix mehr ein(Außer vielleicht 200 WENN-Abfragen pro Formel :P)
grybl Auf diesen Beitrag antworten »

Danke für deine Antwort. Wink
Nur das 200mal Kopieren finde ich schon etwas umständlich. verwirrt
qwerty Auf diesen Beitrag antworten »
zufallszahlen
Bei der Methode ist es aber nicht so, dass jede Zahl nur einmal vorkommt.
Zellerli Auf diesen Beitrag antworten »

Oh, alter Thread, qwerty. Schau mal auf das Postdatum!
whackmann Auf diesen Beitrag antworten »
abcdefg
ACHTUNG mit dieser Formel wird es keine Gleichverteilung geben!!!
Die Zahlen 1 und 6 werden nur halb so oft vorkommen.

Richtig wäre: =ABRUNDEN(ZUFALLSZAHL()*6+1;0)

Gruß,
Carsten
 
 
ergo Auf diesen Beitrag antworten »

Function Zufallszahlen_Unique()


Dim numbers As Integer
Dim rndn As Integer
Dim numberarray(1 To 200) As Integer 'Array with fixed size 200
Dim aldrawn As Variant

For numbers = 1 To 200 'numbers to draw -> must equal array size

drawagain:
rndn = Int((1000 - 0 + 1) * Rnd + 0) 'Interval 1-1000

aldrawn = Application.VLookup(rndn, Application.Transpose(numberarray), 1, 0)

If Not IsError(aldrawn) Then
GoTo drawagain
Else
End If

numberarray(numbers) = rndn
Range("A" & numbers).Value = rndn
Next

End Function
hawe Auf diesen Beitrag antworten »

Dann will ich auch mal meinen Senf dazu geben, obwohl die Frage ja gut abgehangen ist :-)...

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
'ArrayFunktion zur Erzeugung einer zufälligenen Reihenfolge der Zahlen
'von 1 .. n. Die Funktion liefert einen n-Dim Array in einer Spalte zurück
'ggf. Auslieferung der per Array-Funktion angeforderten x Werte.
'z.B x=10 aus 2500: A1:A10{=zufallsverteilung(2500)}
'Markiere A1:A10 und gibt die Formel ein - schließe mit Strg+Umschalt+Eingabe ab
'97()hw::lemitec.de
Function Zufallsverteilung(n As Integer)
Dim i As Integer, nim As Integer, p As Integer, x() As Integer
ReDim x(n - 1, 0) As Integer
 For i = 0 To n - 1: x(i, 0) = i + 1: Next
 Randomize
 For i = 0 To n - 1
     ' Zufallsposition 0 <= nim <= n-i aus Liste bestimmen
     nim = Int(Rnd * (n - i))
     ' Letzten Eintrag aus der Liste auf die NIM Position setzen
     ' Eintrag von Position NIM auf den letzten Eintrag stellen
     ' und Liste beim Hochzählen von i um den letzten Eintrag kürzen
     p = x(nim, 0): x(nim, 0) = x(n - 1 - i, 0): x(n - 1 - i, 0) = p
 Next
 Zufallsverteilung = x
End Function
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »