Рандомизация вещественных чисел
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Доброго времени суток всем!!!
Есть у меня небольшая программка, которая должна заполнять массив случайными вещественными числами и каждое число округлять до точности ближайшего целого, десятых, сотых и тысячных долей после запятой и вывести это все в виде таблицы.
Вопрос в следующем, при каждом запуске программы первое число всегда имеет приблизительно одно и тоже значение, в отличие от остальных. В ЧЕМ ЗАКЛЮЧАЕТСЯ ПРОБЛЕМА?
PS Если изменить цикл
for
так, т.е. первое присвоение сделать в холостую, то работает все нормально.Ничего удивительного. Ты разгоняешь ГСЧ текущим временем. Если вставить кусочек:
то ты увидишь, что «начальное значение» от запуска к запуску изменяется весьма незначительно. Отсюда и «первое число всегда имеет приблизительно одно и тоже значение».
Если для тебя это критично, то после
srand()
можно дополнительно разогнать ГСЧ в цикле. Или использовать более продвинутый генератор. (Посмотри в STL C++11 там что-то есть на эту тему).Кстати, меня удивило семейство функций вида
По-моему элегантнее будет написать одну функцию:
или так:
Не?
Клево!