Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zufallszahlen mit rnd() - was für profis

Zufallszahlen mit rnd() - was für profis
20.02.2005 18:48:03
Matthias
hi zusammen,
ich habe mir mit vba einen code gebastelt der über rnd() laufend 9 zufallszahlen generiert. diese müssen in der summe 1 (bzw.100%) ergeben. leider liefert der code von mir nur rund 100 verschiedene lösungen - bei x durchläufen - sprich excel findet immer nur die gleichen lösungen. an was kann das liegen - denn wenn ich das ganze auf 4 zufallszahlen reduziere liefert er mir x lösungen für x durchläufe. danke für die hilfe
matthias
der code ist im beiligenden excelsheet zu finden.
https://www.herber.de/bbs/user/18383.xls
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufallszahlen mit rnd() - was für profis
Udo
Verwende Randomize
Udo
randomize aber wie? und wo?
21.02.2005 11:36:50
matthias
hi das mit randomize funktioniert nicht so richtig. er rechnet länger aber die ergebnisse sind immer noch doppelt. wie verwende ich randomize richtig. danke

Sub zufallszahl()
Dim i1 As Variant
Dim i2 As Variant
Dim i3 As Variant
Dim i4 As Variant
Dim i5 As Variant
Dim i6 As Variant
Dim i7 As Variant
Dim i8 As Variant
Dim i9 As Variant
Dim n As Integer
Dim a As Integer
Sheets("tabelle1").Activate
For n = 1 To 500
a:
Randomize
i1 = Rnd()
i2 = Rnd()
i3 = Rnd()
i4 = Rnd()
i5 = Rnd()
i6 = Rnd()
i7 = Rnd()
i8 = Rnd()
i9 = 1 - i1 - i2 - i3 - i4 - i5 - i6 - i7 - i8
If i9 < 0 Then GoTo a Else
Range("a" & n).Value = i1
Range("b" & n).Value = i2
Range("c" & n).Value = i3
Range("d" & n).Value = i4
Range("e" & n).Value = i5
Range("f" & n).Value = i6
Range("g" & n).Value = i7
Range("h" & n).Value = i8
Range("i" & n).Value = i9
Next n
End Sub

Anzeige
AW: Zufallszahlen mit rnd() - was für profis
Fred
Das ist so gut wie unmöglich, dass du jemals auf 1 kommst, denk mal darüber nach.
Fred
AW: Zufallszahlen mit rnd() - was für profis
gunter
Eine kleine Ergänzung zum deinem Zufallszahlenproblem...
probier doch mal folgendes:
(Die Konstante "Max" gibt die angestrebte Summe an, "anzahl" steht für die Anzahl der Zahlen, die diese Summe bilden sollen... viel Spaß)
Option Explicit

Sub zufi()
Dim zufiarray(1 To 13) ' Obergrenze muß gleich "anzahl" sein
Const Max = 100
Const anzahl = 10
Erase zufiarray
Dim i, j, x, zufallsrahmen, zufallszahl, summe, rest As Integer
rest = Max
Do
For j = 1 To anzahl
Randomize
zufallsrahmen = Int((rest) * Rnd) + 1 'reduziert den Effekt, daß die ersten Zahlen auch die größten sind
zufallszahl = Int((zufallsrahmen * Rnd) + 1)
summe = 0
For i = 1 To anzahl
summe = summe + zufiarray(i)
Next i
If Not summe + zufallszahl > Max Then
zufiarray(j) = zufiarray(j) + zufallszahl
rest = rest - zufallszahl
End If
Next j
If summe = Max Then 'sicherstellen, daß kein Wert = 0 ist
For x = 1 To anzahl
If zufiarray(x) = "" Then
Erase zufiarray
rest = Max
summe = 0
End If
Next x
End If
Loop Until summe = Max
'For i = 1 To anzahl
'    Cells(1, i) = zufiarray(i)
'Next i
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige