On Fri, 2005-05-20 at 08:22 -0400, Andrew Douglas Pitonyak wrote:Int() rounds towards negative infinity. Rnd() returns a number from 0 to 1 inclusive. At least this is how I documented it in my book, and how I understand the online help. I have not checked the source code to see what it does.
Could this be caused by OOo's tendency to display numbers according to the number of decimal places specified? e.g. 0.9999999 would display as 1.00 where two decimal places is spec'd.
Maybe I don't understand that question, but when Rnd<>1 it is represented by a number with 15 decimals.
This macro prints "1":
Sub RndTest
Randomize 30091
Print Rnd
End SubThis macro prints a 15 decimal number:
Sub RndText0
Randomize 0
Print Rnd
End Sub
Johnny
Johnny Andersson wrote:
> I found that the Rnd function returns values (0.00000... to > 1.00000...), not (0.00000... to 0.99999...), which would be better in > most cases. > > Example: > Dim MyInteger As Integer > Dim MyArray(1 To 6) As Integer > > Randomize > MyInteger=Int(6*Rnd)+1 'Supposed to return numbers 1 to 6, byt may now > and then return 7. Happened to me many times. > MyArray(MyInteger)=MyArray(MyInteger)+1 'Causes an error message if > MyInteger>6 which may happen in this case. > > In this example Rnd returns 1. > > Sub RndTest > Randomize 30091 > Print Rnd > End Sub > > > This example took about 2 minutes to run on my PC (450 MHz P2, a few > other applications were running at the same time): > > Sub RndTest0 > Dim i As Long > Dim Count1 As Integer, Count2 As Integer > Dim Value As Double > Dim ExecTime As Long > > ExecTime=Timer > Randomize > For i=1 To 1000000 > Value=Rnd > If Value>0.99999 Then > Count1=Count1+1 > If Value=1 Then > Count2=Count2+1 > Endif > EndIf > Next i > ExecTime=Timer-ExecTime > Print "Rnd>0.99999 occured "+Count1+" times, Rnd=1 occured "+Count2+" > times. This was calculated in "+ExecTime+" s." > End Sub > > It seems like every time Rnd>0.99999 then Rnd=1, so even though Rnd > produces 15 decimals it seems like only 5 (or less) are relevant. When > I tried Rnd=1 at 20 to 34 occasions (different result different times > of course) which indicates that Rnd=1 about once every 29000 to 50000 > times. > > Anyway, is Rnd=1 supposed to ever happen or is this a bug?
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
