2012-12-06 3 views
4

Как мы можем генерировать число случайных чисел между диапазоном чисел Float (в delphi xe3)?Генерировать случайное число в диапазоне с плавающей запятой

Например, случайный номер [0.10 to 0.90]. мне нужно дать результаты, как:

[ 0.20 , 0.32 , 0.10 , 0.50 ]

Спасибо за решения ....

+1

0.05 не находится в диапазоне [0.10..0.90], почему вы ожидаете его в результате; o) –

+0

Это была типографская ошибка. ;) – User

+4

код в принятом ответе не будет превышать верхний предел диапазона (0,9), это нормально? – mjn

ответ

4
var 
    float : Double; 

    float := Random; // Random float in range: 0 <= float < 1 
    float := 0.1 + float*0.8 // 0.1 <= float < 0.9 

Для инициализации генератора случайных чисел делает один вызов Randomize или установить параметр RandSeed перед вызовом Random функция в первый раз.

Не делает этого, генерирует ту же последовательность при каждом запуске программы. Обратите внимание, однако, что эта последовательность не гарантируется при перекомпиляции для другой версии компилятора.

5

Другой вариант заключается в использовании RandomRange (возвращает: AFrom <= r < ATo) следующим образом:

RandomRange(10, 90 + 1)/100 

или

RandomRange(10, 90 + 1) * 0.01 

будет возвращать числа в диапазоне от 0,10 до 0,90 (в том числе 0,90)

0
function RandomRangeF(min,max:single):single; 
var 
    float : single; 
begin 
    float := Random; 
    result := min + float* (max-min); 
end;