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

последовательность случайных чисел - C++

Восстановить пароль Регистрация
 
nnn52
Сообщений: n/a
11.08.2010, 16:08     последовательность случайных чисел #1
Здравствуйте! Прошу прощения за возможно глупый вопрос) Проблема в том, что в программе
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <time.h>
int main(){
  t:
             int pov;
    int s=0;
    int q=1;
     std::cout << "Enter pov: \n" ;
     std::cin>> pov;
        int a[36];
     while(q<(pov+1)) {
 for(int i = 0; i < 36; i++) 
 {a[i] = i + 1;
}
srand(time(0));
 
 for(int k = 0; k < 36; k++){
 
   int index1 = rand() % 36;
   int index2 = rand() % 36;
   int buf = a[index1];
   a[index1] = a[index2];
   a[index2] = buf;
}
int g;
l: 
 g=0;
p:
          while(g<=33) {
            
             if((floor(a[g]/10)==floor(a[g+2]/10) || (a[g+2]-a[g])%10==0) 
             && a[g]>0 && a[g+2]>0) {
                                                 int y=0;
                                                 while(y<=(34-g)) {
             a[g+y]=a[g+y+1];
             y++;
             };
             a[35]=0;
             goto l;
             }
     g++;
     goto p;
     };
     int f;
     if(a[2]==0) {
                f=1;
                }
                f=0;
     s=s+f;
     q++;
     }
     std::cout<< "win: " <<   s << "\n";
      system("PAUSE");
     return 0;    
     }
функция srand(time(0)) генерирует одни и те же числа, видимо т.к. в течении 1 секунды используется многократно. Как можно исправить это?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2010, 16:08     последовательность случайных чисел
Посмотрите здесь:

последовательность из 10 случайных чисел C++
Написать программу, котрая генерирует последовательность 10 случайных чисел C++
C++ Написать программу,которая генерирует последовательность из 10 случайных чисел в диапазоне от 1 до 10, выводит эти числа на экран и вычисляет их средн
Сгенерировать последовательность 60 случайных чисел с экспоненциальным законом распределения с параметром C++
C++ Написать программу, которая генерирует последовательность из 10 случайных чисел в диапазоне от 1 до 10, выводит эти числа на экран и вычисляет их
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dzhej-Dzhej
Заблокирован
11.08.2010, 16:14     последовательность случайных чисел #2
C++
1
srand( (unsigned)time( NULL ) );
может так
Hayk
2 / 1 / 0
Регистрация: 28.08.2009
Сообщений: 16
11.08.2010, 16:50     последовательность случайных чисел #3
как я помню в Дейтел-е расмотрен пример генерации случайных чисел, и там говарится о твоей проблеме, удачи
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
11.08.2010, 16:59     последовательность случайных чисел #4
Разумеется. У тебя ж srand() вызывается в цикле. Измени так:
C++
1
2
3
4
int main()
{
    srand(time(0));
    // тут все остальное...
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
11.08.2010, 17:15     последовательность случайных чисел #5
Альтернативная генерилка случайных чисел, правда, в виндавсе работать не будет
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
 
int main(void){
    int fd,i, rnd;
 
    if ( ( fd = open("/dev/urandom", O_RDONLY) ) == -1 ){
        perror("open");
        exit(EXIT_FAILURE);
    }
 
    for ( i = 0; i < 10; ++i ){
        if ( read(fd, &rnd, sizeof(int)) != sizeof(int) ){
            perror("read");
            exit(EXIT_FAILURE);
        }
        printf("%d\n", rnd);
    }
 
    close(fd);
    exit(EXIT_SUCCESS);
}
Yandex
Объявления
11.08.2010, 17:15     последовательность случайных чисел
Ответ Создать тему
Опции темы

Текущее время: 20:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru