Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Random в C (Си)
Показать сообщение отдельно

Аватара для ganselo

Старожил


Сообщения: 232
Благодарности: 90

Профиль | Сайт | Отправить PM | Цитировать


Цитата ___oj:
Ни в коем случае. »
Пусть размерность массива равна 20,
а масштаб рандомизации я выбрал 200 (т.е рандом будит возврощать значения от 0 до 200 (0<=rand<=200))

Код: Выделить весь код
for(unsigned n=0; n<50; )
    {
        rand_idx = rand() % 200; 
        if( values[ rand_idx ]==-1 )   values[ rand_idx ] = n++;
}
В случае когда мы выбираем слу4айно индекс массива на интервале [0, 200] (rand_idx = rand() % 200; ) и этот индекс больше размерности массива
то мы начинаем проверять с несуществующем элементом массива if( values[ rand_idx ]==-1 ) values[ rand_idx ] = n++;, т.е тут n не увеличится на еденицу.
И следовательно n будит увеличиватся только тогда, когда rand выберит число находящееся на интервале [0, до размерности массива].
Следовательно n увеличится ровно столько раз сколько будит равна размерность массива. И поэтому значение элементов массива не будит превосхадить размерности массива.

-------
К величайшему сожалению "история учит нас тому, что она ничему не учит".


Отправлено: 14:40, 14-11-2008 | #10

Название темы: Random в C (Си)