2011-01-07 3 views
2

Ich brauche random Funktion mit Integer-Argument, das ich von Operationen, die theoretisch doppelt erhalten können. Also möchte ich für diesen Zweck einige Cast/Round verwenden. Ich habe versucht,Wie kann ich eine genaue ganze Zahl von Fließkommazahl erhalten?

(random (round 10.0)) 
(random (floor 10.0)) 

Aber es wirft Ausnahmen wie

random: expects argument of type <exact integer in [1, 4294967087] or pseudo-random-generator>; given 10.0 

I DrRacket als Dolmetscher verwenden.

Antwort

2

Versuchen (random (floor->exact 10.0)) oder (random (inexact->exact (round 10.0))))

Sie eine der Abrundungen können (Boden/Aufrunden/Abrunden/Decke).

Dies wird hier diskutiert: http://web.mit.edu/scheme_v9.0.1/doc/mit-scheme-ref/Numerical-operations.html (Suche nach "inexact-> genaue")

+0

Plötzlich, ich habe nicht eine solche Funktion in meinem Schema ('erweitern: Nicht konsolidiert Kennung in Modul in: Fußboden-> exact') –

+0

@Stas: Funktioniert das? '(zufällig (ungenau-> genau (rund 10,0)))) ' – DVK

+0

' truncate/ceiling 'geben denselben Fehler wie ich in Frage geschrieben ( –