singlepost

Генерация случайных чисел << На главную или назад  

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

В Си есть связка функций srand / rand, но результат не содержит максимального и минимального значения даже приблизительно, все значения оказываются не в диапозоне [0;N], а более узком диапозоне [N/2;2*N/3] – если грубо говорить.
Если не ошибаюсь такая же ситуация и в Delphi

94 ответов в теме “Генерация случайных чисел”

  1. 13
    Жека Кирпичев ответил:

    Дмитрий, а какие характеристики у этого распределения? Оно какое – равномерное, нормальное, еще какое-нибудь?

  2. 12
    Вячеслав Доценко ответил:

    в бусте есть, насколько я помню.

  3. 11
    Дмитрий Бородин ответил:

    я использовал физические процессы со случайностями и перемешиваниями, например много молекул,их скорости перемешиваются после столкновений,и получается случайное распределение

  4. 10
    Дмитрий Ерохин ответил:

    Попробуй "вихрь Мерсенна"
    '//www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT20…'

  5. 9
    Denis Ch ответил:

    Генерация случайных чисел – слишком важный вопрос, чтобы оставлять его
    на волю случая.
    ( Роберт Ковзю )

  6. 8
    Denis Ch ответил:

    Напиши своюфункцию для генерации случайных но неповторяющихсячисел … Если я пральна понял что тебе нужно…

  7. 7
    Жека Кирпичев ответил:

    Да, у генераторов из стандартных библиотек большинства языков, вроде как, проблемы с равномерностью распределения нету, но вот если брать остатки по *некоторым* модулям, то проблемы начинают появляться.

  8. 6
    Дмитрий Салмин ответил:

    есть же общеизвестные алгоритмы. генератор Парка-Миллера к примеру. или Л'Экюэра (могу ошибиться в фамилии – не русский он :-) ) вроде приличный разброс дает… с вероятностью 0,99 по системе STAN (устаревшая система, но этого бывает достаточно)

  9. 5
    Артур Булакаев ответил:

    А разве можно генерировать случайные путём средств языка?
    Если знаем диапазон исходный, и диапазон реальный, то почему бы не увеличить исходный диапазон так, что бы получить желаемый реальный? Грубо говоря, если [0;N] даёт [N/2;2*N/3]то почему бы не взять [2*N;3*N/2] ?

  10. 4
    Алексей Руденко ответил:

    я написал как-то тестовую программу на делфи – она генерировала 1 000 000 случайных чисел в диапазоне от 1 до 10 и считала, сколько куда попало. Результат получился примерно одинаковый – 0.5% отклонение максимум. Так что должно всё работать

  11. 3
    Андрей Лимаев ответил:

    Грубо говоря, предыдущий оратор прав. Генерировать случайные числа путём средств языка…эээ….

  12. 2
    Жека Кирпичев ответил:

    Можешь показать код, с помощью которого ты убеждаешься, что разброс действительно так мал?

  13. 1
    Станислав Марков ответил:

    а разве это будет не "псевдослучайное"? если пользоваться srand rand

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.