Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
572to576
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
572to576
572to576
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

10 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige