Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.82
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
#1

Что делает функция srand? - C++

04.08.2010, 18:29. Просмотров 4228. Ответов 4
Метки нет (Все метки)

референсы говорят что нужен srand() что бы rand() работал и давал разные значения каждый раз, но я его не использовал, но все равно всё ок рандом выдается каждый раз разный Оо а был ли смысл srand() ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2010, 18:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что делает функция srand? (C++):

Объясните что делает эта программа (for,rand,srand) - C++
Пожалуйста объясните что делает эта программа. Поподробней про for(i=1;i<=5;i++) , a=rand()%(20-10+1)+10; и b=b+a;c=b/i; #include...

что делает функция? - C++
int slength ( char*str){ int Len = -1; while (++len, *str++); return len; } возвращает длину строки? Добавлено через 42...

Что делает функция - C++
имеется вот такая функция. Обясние пожалуйста что она делает? что ето за команды которые она использует и как они работают. В интернете я...

Что делает функция? - C++
void countFrequency( const std::string & str, int *frequency ) //принимаем строку, и указатель на интовый массив { int idx; ...

Что делает функция time? - C++
Объясните доступным языком, пожалуйста, в библиотеке time.h есть команда: time_t currentTime = time(0); Можно какую-то расшифровку или...

Что делает функция weird_thing. - C++
Что делает это функция? weird_thing()

4
easybudda
Модератор
Эксперт CЭксперт С++
9681 / 5631 / 954
Регистрация: 25.07.2009
Сообщений: 10,808
04.08.2010, 18:38 #2
Owyn, да ну?!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
/* #include <time.h> */
 
int main(void){
    int i;
 
    /* srand(time(NULL)); */
 
    for ( i = 0; i < 10; ++i )
        printf("%d ", rand() % 100);
    printf("\n");
 
    return 0;
}
Что делает функция srand?
1
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
04.08.2010, 18:48  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <windows.h>
#include <stdio.h>
#include <shlobj.h>
 
void func()
{
 float max = 15.6;
 float min = 18.6;
 for(i = 0; i < 41; i++)
 {
     float result_f = ((max-min)*((float)rand()/RAND_MAX))+min;
     logfile_f("(rand gave %f)\n", result_f);
 }
}
(rand gave 15.603754)
(rand gave 17.290756)
(rand gave 16.179913)
(rand gave 18.026222)
(rand gave 17.355028)
(rand gave 17.039619)
(rand gave 16.650875)
(rand gave 18.287888)
(rand gave 18.068520)
(rand gave 17.839815)
(rand gave 16.122324)
(rand gave 18.176830)
(rand gave 17.731504)
(rand gave 17.140606)
(rand gave 16.511986)
(rand gave 15.644954)
(rand gave 15.874209)
(rand gave 16.693356)
(rand gave 16.041939)
(rand gave 16.097696)
(rand gave 18.565575)
(rand gave 16.937077)
(rand gave 15.957250)
(rand gave 15.614008)
(rand gave 15.626735)
(rand gave 16.733641)
(rand gave 17.194988)
(rand gave 17.313553)
(rand gave 17.405293)
(rand gave 17.421497)
(rand gave 16.098703)
(rand gave 17.589136)
(rand gave 16.952368)
(rand gave 16.656368)
(rand gave 15.771117)
(rand gave 17.423054)
(rand gave 17.949957)
(rand gave 18.007820)
(rand gave 17.159649)
(rand gave 16.505852)
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
04.08.2010, 19:01 #4
Owyn, насколько я понимаю, псевдослучайное число вычисляется по такому алгоритму.
Пусть С1 и С2 - некоторые константы, seed - зерно псевдослучайной последовательности. Тогда тело функции rand() могло бы выглядеть так:
C
1
2
3
4
5
int rand()
{
    seed = seed*C1 + C2;
    return seed;
}
Переменная seed имеет фиксированное значение. Значит, при каждом запуске программы будет генерироваться одна и та же последовательность псевдослучайных чисел.
А srand позволяет инициализировать зерно seed системным временем. Т.е., если ты запишешь в начале программы srand(time(NULL)) (инициализация зерна текущим временем), то можно считать, что при каждом запуске у тебя будет генерироваться уникальная последовательность

Добавлено через 11 минут
Нашел на просторах Интернета:
Генератор ANSI-C был опубликован комиссией как 'пример'. Мы его тоже приводим, но как 'не рекомендованный' для серьезных приложений.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* (в модуле stdlib.h) */
#define RAND_MAX 32767
 
/* "пример" от комитета ANSI-C */
unsigned long next=1;
 
int rand(void) {
 next=next*1103515245+12345;
 return((unsigned int)(next/65536)%32768);
}
 
void srand(unsigned int seed) {
 next=seed;
}
1
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
04.08.2010, 20:41 #5
Owyn, а теперь запустите программу еще раз и найдите 10 отличий.
0
04.08.2010, 20:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2010, 20:41
Привет! Вот еще темы с ответами:

Что делает функция strcat(t, f) - C++
Функция strcat(t, f) что она делает и как применяеться?

Что делает функция rename_unlink - C++
Имеется следующая программа,надо откоментировать и собственно понять,что делает каждая из функций? #if defined(__unix__) #include...

Что делает функция length? - C++
void main() { using namespace std; string st,stt; cout &lt;&lt; &quot;enter name files:&quot; &lt;&lt;endl; char name; cin &gt;&gt; name; ifstream...

что делает данная функция - C++
bool isProoved(Node&amp; node) { for (string left : node.left) for (string right : node.right) if (isSingleExpression(left) &amp;&amp;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru