[gelöst] Rnd() Problem -1

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

[gelöst] Rnd() Problem -1

Beitrag von clag »

Hallo Leutz,

nachdem ich mich nun lange mit BubbleSort beschäftigt habe und alles sortiert iss was zu sortieren war :lol:
muss ich nun wieder etwas Unordnung erzeugen
dazu verwende ich Basic Funktion Rnd die eine Zufallszahl 0-1 generieren soll und den folgenden Code

Code: Alles auswählen

dim rand1 as integer
dim rand2 as integer

for m=1 to myAnzahl
  rand1 = rnd*myAnzahl-1
  rand2 = rnd*myAnzahl/2
  'print rand1 & ";" & rand2
  chkcell.string = rand1 & ";" & rand2
  chng1 =	mData(rand1)
  chng2 =	mData(rand2)
  mData(rand1) = chng2
  mData(rand2) = chng1
next m
im Prinzip funktioniert diese DatenMischschleife auch prima, solange ich die Zeile mit der print Anweisung aktiv ist und alles langsam abläuf,
lass ich die Schleife ohne print im Schnelldurchlauf mischen gibt es oft Fehler weil eine Zufallszahl -1 ausgegeben wird und damit kann man ja kein array ansprechen.
Meine Methode Ganzzahlen zu erhalten durch festlegen der Variablen auf integer ist vieleicht nicht ganz sauber?

Die Frage ist wie kommt ein -1 zustande und wie verhindere negativ Werte, es soll aber auch 0 erzeugt werden also ein simples +1 tut es nicht?
Zuletzt geändert von clag am Do, 10.10.2013 21:10, insgesamt 1-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Rnd() Problem -1

Beitrag von F3K Total »

Hi Clag,
clag hat geschrieben:Meine Methode Ganzzahlen zu erhalten durch festlegen der Variablen auf integer ist vieleicht nicht ganz sauber?
Vielleicht versuchst Du es mal so:

Code: Alles auswählen

  rand1 = int (rnd * myAnzahl)
  rand2 = int (rnd * myAnzahl / 2)
Gruß R
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Rnd() Problem -1

Beitrag von clag »

Hallo F3K Total,

ja, dein Tip war die richtige Medizin,
jetzt funktioniert es ohne Aussetzer -1 taucht nicht mehr auf.

Danke
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: [gelöst] Rnd() Problem -1

Beitrag von clag »

Hallo F3K Total und andere Leser,

mein Jubel zu dem Lösungsvorschlag war voreilig ;)

das Problem war nicht die fehlende Definition = int ( sondern ein ganz schlichter, peinlicher Fehler in der Formel
denn im Fall das rnd = 0 liefert entstand das Problem,
weil es ist nun mal Fakt 0*99-1=-1 im Gegensatz zu 0*(99-1)=0

Also, anstelle der Formel

Code: Alles auswählen

 rand1 = rnd*myAnzahl-1 
nimmt man

Code: Alles auswählen

 rand1 = rnd*(myAnzahl-1)
und schon ist alles gut

outsch :lol:
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten