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

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

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

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

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

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

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

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

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

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

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

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

Что делает функция wsprintf? - C++
Что делает функция wsprintf ? п.с. FillFoldersListBox принимает строку "A:\\0" (например) и деструктор нужного листбокса int...

Что делает функция strcmp(s1,s2) ? - C++
Функция strcmp(s1,s2)…что она делает?

Что делает функция draw3Dobject? - C++
А именно в данном случае: void draw3Dobject(Point3D *object, int N, float rho, float theta, float phi, float...

Что делает функция getline - C++
Можете мне объяснить что делать функция getline и если не сложно превисти пример ее использования

Что делает эта функция? - C++
Что делает эта функция? int vich_cods(const void *a, const void *b){ // return *(char*)a - *(char*)b; }

Что делает функция strcpy(t, f) - C++
Функция strcpy(t, f) что она делает?


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
04.08.2010, 18:38     Что делает функция srand? #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?
Owyn
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 64
04.08.2010, 18:48  [ТС]     Что делает функция srand? #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)
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
04.08.2010, 19:01     Что делает функция srand? #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;
}
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
04.08.2010, 20:41     Что делает функция srand? #5
Owyn, а теперь запустите программу еще раз и найдите 10 отличий.
Yandex
Объявления
04.08.2010, 20:41     Что делает функция srand?
Ответ Создать тему
Опции темы

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