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

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

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

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

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

Привет, мне надо наполнить массив случайными числами но толька чтоб они не повторялись, подскажыте как ето сделать.
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) ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
odip
Эксперт С++
7157 / 3297 / 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];
}
};
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.07.2009, 20:17 #20
2pigah: По условию числа не должны повторяться. То что они случайные еще не гарантирует, что они не будут повторяться.

2Casper!: Ты не поверишь, но ты тоже невнимательно читал условие
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
21.07.2009, 20:28 #21
Цитата Сообщение от odip Посмотреть сообщение
Вообще говоря числа от 1000 до 9999
пфф...я знал что 9999...но когда у тебя было 8999 я тогда и написал что не знал...а мне прсто надо было в этой проге 9000..
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.07.2009, 20:34 #22
Чтобы получить случайные числа от 1000 до 9000 нужно делать так:

C
1
int a = rand()%8001 + 1000; //число от 1000 до 9000
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
21.07.2009, 22:43 #23
odip, к чему так?
где я читал совсем по другому было
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
21.07.2009, 23:43 #24
@lex,
Цитата Сообщение от @lex Посмотреть сообщение
где я читал совсем по другому было
rand()%n возвращает число от 0 до n-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
#include <iostream>
#include <iomanip>
 
using namespace std;
//----------------------------------------------------- 
int main(int argc, char* argv[]) 
{
srand(time(NULL));
    
    const int max = 9001;    
    const int n = 1000;
    int arr[n];
 
    for(int i = 0; i < n; i++)
    {
        arr[i] = rand()%max + 1000;
        for(int j = 0; j < i; j++)
        if(arr[i] == arr[j])
        {    
            i--;
            break;          
        }               
    }
    
    for(int i = 0; i < n; cout << setw(5) << arr[i++]);    
    
    
system("PAUSE");
return EXIT_SUCCESS;
}
//-----------------------------------------------------
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.07.2009, 23:50 #25
Соответственно m+rand()%(n-m+1) возвращает число от m до n.
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
22.07.2009, 23:59 #26
Создал тему "Случайные числа"
http://www.cyberforum.ru/cpp-beginners/thread44753.html
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2009, 23:59
Привет! Вот еще темы с ответами:

Случайные числа от 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++
День добрый . Задание : игра в кубики с компом . Не могу понять как сделать для компа и человека действительно разные числа . Делал через...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.07.2009, 23:59
Ответ Создать тему
Опции темы

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