Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];

Вниз

Генератор случайных чисел   Найти похожие ветки 

 
ИванН   (2008-12-16 18:23) [0]

У меня есть генератор случайных чисел, который на выходе дает не целый результат в диапазоне от 0 до 1 (0 и 1 включительно), например: 0,73

Мне нужно из результатов работы этого генератора сделать равновероятностный генератор от 1 до 6 (1 и 6 включительно). Пробовал так: x = Округл(Rand * 5) + 1
Но в таком случае он не равновероятностный.

Подскажите пожалуйста.


 
TUser ©   (2008-12-16 18:26) [1]


> Но в таком случае он не равновероятностный.
>

как проверял?


 
Правильный$Вася   (2008-12-16 18:31) [2]

(X - Xmin)/(Xmax - Xmin)
обычное нормирование


 
anonims   (2008-12-17 09:46) [3]

округл(rnd*5)
длина диапазона попадания в 3 (2.5 - 3.5) =1
диапазон попадания в 0 (0 - 0.5) =0.5

округл(rnd *6 +0.5)


 
Сергей М. ©   (2008-12-17 10:04) [4]


> ИванН


Округление и линейное масштабирование не изменяет вероятностные характеристики результирующей последовательности.


 
wal ©   (2008-12-17 10:20) [5]


> Сергей М. ©   (17.12.08 10:04) [4]

Смотря что и как округлять


 
Jeer ©   (2008-12-17 10:28) [6]

Вот именно..
Округление нелинейная операция, к тому же есть разные методики округления.
А переход от одного целочисленного базиса RNG к другому - вообще нетривиальная задача.


 
Interior   (2008-12-17 10:30) [7]

Округл(RND*5)+1   И ВсЕ

5   - потому что диапазон равен 6-1 (от 1 до 6)
+1 - потому что нижний предел 1 (от 1)
Округление по вкусу - смотря какой результат надо, целый или дробный


 
Interior   (2008-12-17 10:32) [8]

И никаких нетривиальных задач.


 
wal ©   (2008-12-17 10:35) [9]


> Interior   (17.12.08 10:32) [8]

О тебя округление вверх, вниз или к ближайшему целому?


 
Сергей М. ©   (2008-12-17 10:36) [10]


> есть разные методики округления


Предполагается, что ОКРУГЛ использует математическую либо банковскую методику, что на диапазоне [1..6] вряд ли вносит существенные искажения в  распределение..


 
Дуб ©   (2008-12-17 10:42) [11]

>Interior   (17.12.08 10:32) [8]
> Сергей М. ©   (17.12.08 10:36) [10]

Все предельно ясно разжевано в

> anonims   (17.12.08 09:46) [3]

зачем тут спорить?


 
Jeer ©   (2008-12-17 10:46) [12]


>
> О тебя округление вверх, вниз или к ближайшему целому?
>


Для систем с целочисленным основанием ( двоичная, например) даже такого уточнения недостаточно, поскольку принципиально вносится систематическая погрешность. Чтобы ее свести к минимуму в асимптотике, надо менять случайным образом правило округления.


> Interior   (17.12.08 10:32) [8]
>
> И никаких нетривиальных задач.


Ну попробуй перейти от целичисленных диапазонов от 1..10 к  1..1000 с сохранением вероятностных свойств распределения.
Конечно, это другая задача - но уточнил, что не так все просто в этом мире :)


 
Jeer ©   (2008-12-17 10:53) [13]


> Дуб ©   (17.12.08 10:42) [11]
>
> >Interior   (17.12.08 10:32) [8]
> > Сергей М. ©   (17.12.08 10:36) [10]
>
> Все предельно ясно разжевано в
>
> > anonims   (17.12.08 09:46) [3]
>
> зачем тут спорить?


Для операций сложения и вычитания в двоичной системе сч. имеет место ненулевое мат.ожидание операционных ошибок.
Я всего лишь об этом :)


 
Дуб ©   (2008-12-17 10:57) [14]


> Jeer ©   (17.12.08 10:53) [13]

А я к тебе без претензий. :)


 
Сергей М. ©   (2008-12-17 11:06) [15]

В общем да, я был неправ.

procedure TForm1.Button3Click(Sender: TObject);
const
 m = 6;
var
 x, i: Integer;
 arr: array[1..m] of Integer;
begin
 SetRoundMode(rmTruncate); //для сохранения оригинального распределения
 for i := 1 to 10000000 do begin
   x := Round(Random * (m)) + 1;
   Inc(arr[x], 1);
 end;
 for i := 1 to m do
   Chart.Series[0].AddXY(i, arr[i]);
end;


 
Jeer ©   (2008-12-17 12:35) [16]

Почти завершая, казалось бы, простую тему, приведу ссылку на статью в которой более-менее адекватно автор постарался ответить на многие вопросы, возникающие при работе с float данными и округлениями.

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1217

А тут методика тестрирования
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1218



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

Форум: "Прочее";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.026 c
15-1229593039
KSergey
2008-12-18 12:37
2009.02.15
Б.Шнайер. Прикладная криптография. Нужна бумажная.


2-1230921661
New77
2009-01-02 21:41
2009.02.15
Как ограничить выбор в ComboBox - a, b, с и "Пусто"?


15-1229504238
Добежал
2008-12-17 11:57
2009.02.15
Не открываются COM-порты выше COM9


2-1231410906
EastGod
2009-01-08 13:35
2009.02.15
Альтернативные потоки файлов


2-1230629849
LabaN
2008-12-30 12:37
2009.02.15
Смайлы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский