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

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

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

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

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

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

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

Случайные числа - C++
Можно ли генерировать случайные числа типа float с помощью rand()?

Случайные числа от -8 к 8 - C++
Как можно сделать рандомом числа от -8 к 8, нашел на форуме пример: int r=(rand() % 11) + 5;//от 0 до 10 и +5, то есть от 5 до 15 но...

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

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

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

25
odip
Эксперт С++
7161 / 3223 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.07.2009, 15:16 #2
Инициализируем генератор от времени, например так:
Код
srand( time() );
Потом с помощью rand() получаем.
0
schdub
3009 / 1354 / 264
Регистрация: 19.01.2009
Сообщений: 3,577
Завершенные тесты: 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;
}
0
Evg
Эксперт CАвтор FAQ
18884 / 6839 / 498
Регистрация: 30.03.2009
Сообщений: 19,247
Записей в блоге: 30
20.07.2009, 15:27 #4
polivets, "но толька чтоб они не повторялись"
0
schdub
3009 / 1354 / 264
Регистрация: 19.01.2009
Сообщений: 3,577
Завершенные тесты: 1
20.07.2009, 15:31 #5
Цитата Сообщение от Evg Посмотреть сообщение
polivets, "но толька чтоб они не повторялись"
Это пимер как пользоваться srand / rand. на этапе генерации очень просто пробежаться по массиву и проверить есть ли в нем новое сгенериное псевдослучайное число. Если нет добавляем, если есть генерим новое, проверяем... и т.д.
0
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
20.07.2009, 15:34 #6
делай так: сгенерируй число(уже показано как),а потом пробегись по массиву,проверь есть ли там уж это число,если есть,то опять генерируй до тех пор,пока не будет того числа,которого нет в массиве,а если нет такого числа,то записывай в массив
0
odip
Эксперт С++
7161 / 3223 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.07.2009, 15:35 #7
Не ясен смысл фразы "чтобы они не повторялись".
1) Чтобы от запуска к запуску были разные случайные числа.
2) Чтобы все полученные случайные числа были различными.
0
schdub
3009 / 1354 / 264
Регистрация: 19.01.2009
Сообщений: 3,577
Завершенные тесты: 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;
}
1
Evg
Эксперт CАвтор FAQ
18884 / 6839 / 498
Регистрация: 30.03.2009
Сообщений: 19,247
Записей в блоге: 30
20.07.2009, 15:49 #9
odip, пункт 2
0
AnonymC
1175 / 458 / 30
Регистрация: 23.06.2009
Сообщений: 6,355
Завершенные тесты: 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);
 
}
0
odip
Эксперт С++
7161 / 3223 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.07.2009, 16:21 #11
C
1
int a = rand()%9000 + 1000; //число от 1000 до 9000
Вообще говоря числа от 1000 до 9999
0
Evg
Эксперт CАвтор FAQ
18884 / 6839 / 498
Регистрация: 30.03.2009
Сообщений: 19,247
Записей в блоге: 30
20.07.2009, 16:25 #12
От 1000 до 9999 Ж)
1
AnonymC
1175 / 458 / 30
Регистрация: 23.06.2009
Сообщений: 6,355
Завершенные тесты: 1
20.07.2009, 16:27 #13
odip, упс.....не знал...
0
Ёрик
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. писал очень быстро,заметил недочет: у меня нет проверки на случай,если интервал генерации чисел меньше,чем размер массива,в этом случае будет зацикливание
0
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.
0
20.07.2009, 18:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2009, 18:03
Привет! Вот еще темы с ответами:

Случайные числа от 1 до 9 - C++
Можно так создавать случайные числа от 1 до 9 void main() { srand(time(0)); for (int i = 0; i&lt;20; i++) { cout &lt;&lt;...

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

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

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


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

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

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