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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.70
Wolandello
1 / 1 / 0
Регистрация: 06.06.2009
Сообщений: 35
#1

Случайные числа - C++

20.07.2009, 15:14. Просмотров 2602. Ответов 25
Метки нет (Все метки)

Привет, мне надо наполнить массив случайными числами но толька чтоб они не повторялись, подскажыте как ето сделать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2009, 15:14     Случайные числа
Посмотрите здесь:

случайные числа - C++
Всем привет! нужна ваша помощь. мне нужно реализовать функцию, которая заполняет двумерный массив mat случайными числами. на сколько я...

Случайные числа - C++
Написать генератор псевдослучайных чисел по алгоритму f(n) = f(n-1) + f(n-2) + f(n-3) ( f0 = f1 = f2 = 1) r = fn mod 211. ( 0 - 210) ...

Случайные числа - C++
Подскажите функцию(или класс а вней функцию) для генерирования случайных чисел аналог Random.Next() C#

случайные числа - C++
rand() в VS имеет диапазон от 0 до 32768? даже изменение RAND_MAX ничего не повысит верхний уровень?

Случайные числа - C++
Всем доброго времени суток, я чёт туплю, подскажите, как посчитать сколько чисел сгенерированных случайным образом в диапазоне попадают в...

Случайные числа от -10 до 10 - C++
сижу я значит и не могу вывести случайные числа от -10 до 10! Получается только от -50 до 50, for(int j= 0; j<8; j++) ...

случайные числа - C++
подскажите как сформировать двумерный массив случайных чисел в заданном диапозоне которые не повторяются

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
7156 / 3296 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.07.2009, 15:16     Случайные числа #2
Инициализируем генератор от времени, например так:
Код
srand( time() );
Потом с помощью rand() получаем.
schdub
2945 / 1289 / 238
Регистрация: 19.01.2009
Сообщений: 3,365
Завершенные тесты: 1
20.07.2009, 15:24     Случайные числа #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
 
#define MAX 10
 
int main()
{
    int i;
    int vector[MAX];
 
    srand(time(NULL));
 
    for (i=0; i<MAX; i++)
        vector[i] = rand() % 100;
 
    for (i=0; i<MAX; i++)
        printf("%d ", vector[i]);
    
    return 0;
}
Evg
Эксперт CАвтор FAQ
17530 / 5768 / 368
Регистрация: 30.03.2009
Сообщений: 15,865
Записей в блоге: 26
20.07.2009, 15:27     Случайные числа #4
polivets, "но толька чтоб они не повторялись"
schdub
2945 / 1289 / 238
Регистрация: 19.01.2009
Сообщений: 3,365
Завершенные тесты: 1
20.07.2009, 15:31     Случайные числа #5
Цитата Сообщение от Evg Посмотреть сообщение
polivets, "но толька чтоб они не повторялись"
Это пимер как пользоваться srand / rand. на этапе генерации очень просто пробежаться по массиву и проверить есть ли в нем новое сгенериное псевдослучайное число. Если нет добавляем, если есть генерим новое, проверяем... и т.д.
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
20.07.2009, 15:34     Случайные числа #6
делай так: сгенерируй число(уже показано как),а потом пробегись по массиву,проверь есть ли там уж это число,если есть,то опять генерируй до тех пор,пока не будет того числа,которого нет в массиве,а если нет такого числа,то записывай в массив
odip
Эксперт С++
7156 / 3296 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.07.2009, 15:35     Случайные числа #7
Не ясен смысл фразы "чтобы они не повторялись".
1) Чтобы от запуска к запуску были разные случайные числа.
2) Чтобы все полученные случайные числа были различными.
schdub
2945 / 1289 / 238
Регистрация: 19.01.2009
Сообщений: 3,365
Завершенные тесты: 1
20.07.2009, 15:41     Случайные числа #8
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
// количество элементов в массиве
#define MAX     10
// макс число+1 сгенерированное rand
// т.е. генерироваться будут числа
// от 0 до MAX_POSL-1
// ВНИМАНИЕ! оно не должно быть
// меньше MAX
#define MAX_POSL    10
 
int main()
{
    int i, n, j, has;
    int vector[MAX];
 
    srand(time(NULL));
 
    vector[0] = rand() % MAX_POSL;
    for (i = 1; i < MAX; i++)
    {
        do
        {
            n = rand() % MAX_POSL;
            for (j = 0, has = 0; j <= i; j++)
                if (vector[j]==n)
                {
                    has = 1;
                    break;
                }
 
        } while (has);
 
        vector[i] = n;
    }
 
    for (i=0; i<MAX; i++)
        printf("%d ", vector[i]);
    
    return 0;
}
Evg
Эксперт CАвтор FAQ
17530 / 5768 / 368
Регистрация: 30.03.2009
Сообщений: 15,865
Записей в блоге: 26
20.07.2009, 15:49     Случайные числа #9
odip, пункт 2
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
20.07.2009, 16:13     Случайные числа #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "locale.h"
#include "windows.h"
#include "stdlib.h"
#include "time.h"
using namespace std;
 
int main(){
 
 
 
  /* Чтобы не генерировались ОДИНАКОВЫЕ цепочки псевдослучайных чисел, задаём начальную точку с помощью функции srand, передавая в неё кол-во милисекудн, прошедших с 1 января 1970 года ( time(NULL) ). Как вы понимаете, это число НИКОГДА не будет повторятся )) */
  srand((unsigned)time(NULL));
 
 
  int a = rand()%9000 + 1000; //число от 1000 до 9000
  printf("%d", a);
 
}
odip
Эксперт С++
7156 / 3296 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.07.2009, 16:21     Случайные числа #11
C
1
int a = rand()%9000 + 1000; //число от 1000 до 9000
Вообще говоря числа от 1000 до 9999
Evg
Эксперт CАвтор FAQ
17530 / 5768 / 368
Регистрация: 30.03.2009
Сообщений: 15,865
Записей в блоге: 26
20.07.2009, 16:25     Случайные числа #12
От 1000 до 9999 Ж)
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,233
Завершенные тесты: 1
20.07.2009, 16:27     Случайные числа #13
odip, упс.....не знал...
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
20.07.2009, 17:47     Случайные числа #14
Вот на С.НА С++ там в 2 шага.Если что не так,пишите.Давно очень на С не писал.Вспомним молодость!
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
#include <stdio.h>
#include <time.h>
#include <limits.h>
#include <stdlib.h>>
 
#define N 100
int main()
{
    int arr[N];
    int i,j;
    int cur;
    short int flag = 255;
 
    srand(time(0));
    
    rand();
    
 
    for ( i = 0; i < N; i++ )
    {
        cur = rand()% INT_MAX;
        for ( j = 0; j < N; j++ ) 
        {
            if(arr[j] == cur)
            {
                --i;
                flag = 1;
                break;
            }   
        }
        if(flag != 1)
        {
            arr[i] = cur;
        }
        flag = 255;
    }
 
        
    for ( i = 0; i < N; i++ )
    {
        printf("%d\n",arr[i]);
    }
 
    //free(arr);
 
}
p.s. писал очень быстро,заметил недочет: у меня нет проверки на случай,если интервал генерации чисел меньше,чем размер массива,в этом случае будет зацикливание
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
20.07.2009, 18:03     Случайные числа #15
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
void main()
{
    const short N = 10;
    unsigned int arr[N];
 
    for(int i = 0; i < N; i++)
        arr[i] = rand(пожалуйста не повторяйся)%99999999;
};
Microsoft(r) Corporation | Please not repeated system.
odip
Эксперт С++
7156 / 3296 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.07.2009, 18:10     Случайные числа #16
arr[i] = rand(пожалуйста не повторяйся)%99999999;
1) Не надежный способ, то есть не решает поставленную задачу
2) Технически неверно, т.к. rand() генерирует числа от 0 до RAND_MAX, где RAND_MAX может быть равен 0x7fff. То есть много значений так не получить.

А вообще шутка хорошая
pigah
12 / 12 / 2
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
21.07.2009, 19:21     Случайные числа #17
C++
1
2
3
4
5
6
7
const int N=16;//размер массива
const int A=N-10,B=N+10;//границы диапазона случайных чисел
int x[N];//массив
srand(GetTickCount());
for(i=0; i<N; i++){
x[i]=A+rand()%(B-A+1);//заполнение массива случайными числами
}
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
21.07.2009, 19:51     Случайные числа #18
Из моего архива
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
#include <iostream>
 
using namespace std;
 
int main(int argc, char* argv[])
 
{
       int koloda[54] ;
        int prom[54];
 
        srand((unsigned)time( NULL ) );
 
        for (int i=0;i<54;i++)
       {
 
             int k=((rand()%(54-i)));
             int j=0;
 
             while ((j<=(i-1))&&(prom[j]<=k))
             {
                 k=k+1;
                 j=j+1;
             }
            koloda[ i ] = k ;
 
            while (j<=i)
            {
                  int a=prom[j];
 
                  prom[j]=k;
                  k=a;
                  j=j+1;
            }
       }
 
        for (int i=0;i<54;i++)
             cout<<koloda[i]<<" ";
 
        cin.get();
        return 0;
}
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
#include <iostream>
 
using namespace std;
 
int main(int argc, char* argv[])
 
{
       srand((unsigned)time( NULL ) );
        bool p[54];
        for(int j=0;j<54;j++)
            p[j]=false;
 
        int Cards[54];
 
        for(int i=0;i<54;i++)
        {
              int k=((rand()%(54)));
 
              while(p[k]==true)
              {
                     k=((rand()%(54)));
                      cout<<".";
              }
              p[k]=true;
 
              Cards[i]=k;cout<<Cards[i]<<" ";
        }
 
        cin.get();
        return 0;
}
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
21.07.2009, 20:15     Случайные числа #19
столько разных способов и половину написать не могла пример по вопросу

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
void main()
{
       srand(time(0));
        const size = 10;
         int arr[size];
 
        for(int i = 0; i < size; i++)(
                arr[i] = rand()%20;//1-19
}
   for(int i = 0; i < size; i++)(
             cout<<arr[i];
}
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2009, 20:17     Случайные числа
Еще ссылки по теме:

случайные числа в с++ - C++
День добрый . Задание : игра в кубики с компом . Не могу понять как сделать для компа и человека действительно разные числа . Делал через...

Случайные числа - C++
void rndChain(){ system(&quot;cls&quot;); SetConsoleTitleA(&quot;dovjina zrost vibirki&quot;); ...

Случайные числа - C++
Написать функцию, которая подсчитует сколько раз заданое число встречается в последовательности N случайных чисел.

Случайные числа. - C++
Есть числа 2,4,6,8,0 - из них нужно случайно выбрать одно. Как это сделать? Google'ил, нашел только что то по типу #include &lt;stdlib.h&gt; ...

Случайные числа - C++
Необходимо написать программу, которая будет генерировать случайную величину от 0 до 1 (включая 0 и 1), в результаты должны быть дробные...


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

Или воспользуйтесь поиском по форуму:
odip
Эксперт С++
7156 / 3296 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.07.2009, 20:17     Случайные числа #20
2pigah: По условию числа не должны повторяться. То что они случайные еще не гарантирует, что они не будут повторяться.

2Casper!: Ты не поверишь, но ты тоже невнимательно читал условие
Yandex
Объявления
21.07.2009, 20:17     Случайные числа
Ответ Создать тему
Опции темы

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