Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 06.06.2009
Сообщений: 35

Случайные числа

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

Студворк — интернет-сервис помощи студентам
Привет, мне надо наполнить массив случайными числами но толька чтоб они не повторялись, подскажыте как ето сделать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.07.2009, 15:14
Ответы с готовыми решениями:

Нужно чтобы случайные числа вставали в конец массива,а не удаляли числа
#include <iostream> using namespace std; void main() { setlocale(LC_ALL, "Russian"); int n; // кол-во элементов массива ...

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

Случайные числа
как выполнить генератор случайных чисел генерировал любое число и присваивал число переменной

25
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
20.07.2009, 15:16
Инициализируем генератор от времени, например так:
Code
1
srand( time() );
Потом с помощью rand() получаем.
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
20.07.2009, 15:24
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;
}
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
20.07.2009, 15:27
polivets, "но толька чтоб они не повторялись"
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
20.07.2009, 15:31
Цитата Сообщение от Evg Посмотреть сообщение
polivets, "но толька чтоб они не повторялись"
Это пимер как пользоваться srand / rand. на этапе генерации очень просто пробежаться по массиву и проверить есть ли в нем новое сгенериное псевдослучайное число. Если нет добавляем, если есть генерим новое, проверяем... и т.д.
0
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
20.07.2009, 15:34
делай так: сгенерируй число(уже показано как),а потом пробегись по массиву,проверь есть ли там уж это число,если есть,то опять генерируй до тех пор,пока не будет того числа,которого нет в массиве,а если нет такого числа,то записывай в массив
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
20.07.2009, 15:35
Не ясен смысл фразы "чтобы они не повторялись".
1) Чтобы от запуска к запуску были разные случайные числа.
2) Чтобы все полученные случайные числа были различными.
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
20.07.2009, 15:41
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;
}
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
20.07.2009, 15:49
odip, пункт 2
0
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
20.07.2009, 16:13
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);
 
}
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
20.07.2009, 16:21
C
1
int a = rand()%9000 + 1000; //число от 1000 до 9000
Вообще говоря числа от 1000 до 9999
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
20.07.2009, 16:25
От 1000 до 9999 Ж)
1
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
20.07.2009, 16:27
odip, упс.....не знал...
0
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
20.07.2009, 17:47
Вот на С.НА С++ там в 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. писал очень быстро,заметил недочет: у меня нет проверки на случай,если интервал генерации чисел меньше,чем размер массива,в этом случае будет зацикливание
0
Заказ софта
 Аватар для Search..
343 / 188 / 21
Регистрация: 26.05.2009
Сообщений: 863
20.07.2009, 18:03
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.
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
20.07.2009, 18:10
arr[i] = rand(пожалуйста не повторяйся)%99999999;
1) Не надежный способ, то есть не решает поставленную задачу
2) Технически неверно, т.к. rand() генерирует числа от 0 до RAND_MAX, где RAND_MAX может быть равен 0x7fff. То есть много значений так не получить.

А вообще шутка хорошая
0
 Аватар для pigah
12 / 12 / 5
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
21.07.2009, 19:21
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);//заполнение массива случайными числами
}
0
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
21.07.2009, 19:51
Из моего архива
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;
}
0
 Аватар для Casper!
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
21.07.2009, 20:15
столько разных способов и половину написать не могла пример по вопросу

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];
}
};
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
21.07.2009, 20:17
2pigah: По условию числа не должны повторяться. То что они случайные еще не гарантирует, что они не будут повторяться.

2Casper!: Ты не поверишь, но ты тоже невнимательно читал условие
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.07.2009, 20:17
Помогаю со студенческими работами здесь

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

случайные числа
как заполнить массив случайными числами например от -50 до 50 void generate(int mas,int n){ for(int i=0;i&lt;n;i++) ...

Случайные числа. if, else
Подскажите, как мне сделать так. чтобы показывало рандомное число и выводило либо how, либо Today #include &lt;iostream&gt; using...

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru