2016-10-23 7 views
1

В Matlab эту функциюКак генерировать равномерно распределенных случайных чисел между 0 и 1, в Delphi

r = rand(5) 

Результат:

r = 

0.8147 0.0975 0.1576 0.1419 0.6557 
0.9058 0.2785 0.9706 0.4218 0.0357 
0.1270 0.5469 0.9572 0.9157 0.8491 
0.9134 0.9575 0.4854 0.7922 0.9340 
0.6324 0.9649 0.8003 0.9595 0.6787 

используется для генерации матрицы 5 по-5 равномерно распределенных случайные числа от 0 до 1.

Что такое эквивалентная функция в Delphi?

ответ

5

Нет стандартной функции Delphi RTL, которая будет генерировать матрицу или любую другую коллекцию случайных чисел.

Существует, однако, функция Random, которую вы используете для создания единственного случайного числа. Вам просто нужно вызывать это столько раз, сколько необходимо для генерации чисел для инициализации любой коллекции случайных чисел, в которой вы нуждаетесь.

В Delphi матрица 5x5 может быть представлена ​​в ряде способов, один из которых может быть простой 2 одномерный массив, который может быть инициализируется в простом цикле:

var 
    x, y: Integer; 
    r: array[0..4, 0..4] of Double; 
begin 
    for x := 0 to 4 do 
    for y := 0 to 4 do 
     r[x][y] := Random; 

    // etc to work with the matrix (array)... 

end; 

Как и в большинстве языков программирования/время выполнения, по умолчанию это будет производить ту же последовательность случайных чисел каждый раз, когда вы запускаете программу. Чтобы изменить «семя» и получить другую последовательность, вы можете либо позвонить Randomize, либо установить переменную RandSeed (вы получите ту же последовательность цифр для заданного значения RandSeed).

Функция Random возвращает случайное значение между 0.0 и 1.0, отобранное из равномерного распределения.

Генератор псевдослучайных чисел (PRNG), используемый Delphi, представляет собой простой линейный конгруэнтный генератор, очень простой и не имеющий очень хороших свойств в качестве PRNG. Matlab использует намного лучший PRNG, его по умолчанию - Mersenne Twister. Если для вас важно качество псевдослучайных чисел, вам нужно будет выбрать конкретный алгоритм и либо реализовать его самостоятельно, либо найти в подходящей библиотеке, которой много.

+0

Распределение равномерно, но это не очень хороший PRNG. Matlab не производит и не сохраняет значения, округленные до 4dp. Вот как они отображаются. Мое редактирование пытается прояснить все это. –

 Смежные вопросы

  • Нет связанных вопросов^_^