Вниз
Скачать: CL | DM;

массив случайных чисел заданной суммы   Найти похожие ветки 

← →
картман ©   (2012-01-16 12:33) [0]

Всем доброго дня!
Как сделать массив случайных чисел, чтобы сумма элементов была равна определенному числу - в моем случае 1=одному(приближенно)?


← →
Сергей М. ©   (2012-01-16 12:40) [1]

как обычно - с использованием Random()


← →
OW ©   (2012-01-16 12:41) [2]


>  с использованием Random()

отнимая от заданного числа


← →
TUser ©   (2012-01-16 12:41) [3]

простейший способ

summ := 1;
for i := 1 to n do
 num := random() * summ;
 writeln (num);
 summ := summ - num;

а вообще, зависит, наверное, от того, какие тебе требуются свойства распределений, скажем, надо ли, чтобы все числа (1е, 2е, ...) были распределены равномерно


← →
картман ©   (2012-01-16 12:42) [4]


> с использованием Random()


>
> отнимая от заданного числа

распределение фиговое получится


← →
картман ©   (2012-01-16 12:44) [5]


> какие тебе требуются свойства распределений,

не знаю)))


← →
Ega23 ©   (2012-01-16 12:45) [6]

[0..length-2] = random
[length-1] = 1 - Sum([0..length-2]).  :)

и сработает точно для целых чисел.


← →
Dimka Maslov ©   (2012-01-16 12:50) [7]

1. Генерируем массив случайных чисел.
2. Вычисляем сумму его членов
3. Делим заданное число на полученную величину, получаем множитель.
4. Умножаем все члены массива на множитель.
5. Это называется "нормализация"


← →
Сергей М. ©   (2012-01-16 12:51) [8]


> картман ©   (16.01.12 12:42) [4]


да просто наштампуй сколько нужно элементов с нужным распределением, а потом скорректируй один элемент так чтобы подогнать под условие)


← →
CRLF   (2012-01-16 12:51) [9]

делай массив случайных, затем нормируй


← →
картман ©   (2012-01-16 12:53) [10]

ага, спасибо


← →
KilkennyCat ©   (2012-01-16 13:42) [11]


> а потом скорректируй один элемент так чтобы подогнать под
> условие

- а что это за графа "прокатило - 10 000 руб" ?
- не прокатило, вычеркиваем....

(с) автосервисный анекдот



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.005 c
2-1326809483
Alexander123
2012-01-17 18:11
2012.05.20
чтение массива double с помощью TFileStream


15-1326702784
картман
2012-01-16 12:33
2012.05.20
массив случайных чисел заданной суммы


15-1326539168
SQLEX
2012-01-14 15:06
2012.05.20
Шахматы. Короткие партии. Аля "Клуб13"


2-1326652931
TChecListBox
2012-01-15 22:42
2012.05.20
Удалить строку из ChecListBox


2-1326953184
OW
2012-01-19 10:06
2012.05.20
Из потока надо передать строку в VCL сообщением




   Наверх