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

Рандомные числа

20.09.2013, 14:14. Показов 8928. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте форумчанине... Хотелось бы спросить, как сгенирировать случайные числа от 1 до 100000 причем так чтобы не повторяться?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2013, 14:14
Ответы с готовыми решениями:

Рандомные числа
Доброго времени суток:) Вот задача:Для каждого из следующих наборов целых чисел напишите единственный оператор ,который будет печатать...

Рандомные числа
Есть программа, которая считает функцию. На второй таблице значение точности Е должно становиться случайным от 10^-1 до 10^-7 Помогите...

Рандомные числа -16 до 30
Задание: С помощью генератора случайных чисел занести в массивы М(15) и А(12) числа из диапазона от -16 до 30. Написать функцию,...

20
 Аватар для Cynacyn
35 / 35 / 7
Регистрация: 02.05.2013
Сообщений: 109
20.09.2013, 14:19
http://www.cplusplus.com/refer... /?kw=srand

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* srand example */
#include <stdio.h>      /* printf, NULL */
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */
 
int main ()
{
  printf ("First number: %d\n", rand()%100000);
  srand (time(NULL));
  printf ("Random number: %d\n", rand()%100000);
  srand (1);
  printf ("Again the first number: %d\n", rand()%100000);
 
  return 0;
}
чтобы не повторялись, записывать числа в массив и проверять - не попадалось ли число
0
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
20.09.2013, 14:23  [ТС]
Цитата Сообщение от Cynacyn Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* srand example */
#include <stdio.h>      /* printf, NULL */
#include <stdlib.h>     /* srand, rand */
#include <time.h>       /* time */
 
int main ()
{
  printf ("First number: %d\n", rand()%100000);
  srand (time(NULL));
  printf ("Random number: %d\n", rand()%100000);
  srand (1);
  printf ("Again the first number: %d\n", rand()%100000);
 
  return 0;
}
чтобы не повторялись, записывать числа в массив и проверять - не попадалось ли число
Видимо не корректно задал вопрос... Так вот имеется код:
C++
1
2
3
4
5
6
while(a) 
    {
        for(i=0; i<a; i++){
            sum1=W[];
        }
    }
и мне надо чтобы в фрагменте
C++
1
[]
было рандомное число от 1 до 100000 без повторения
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.09.2013, 14:24
Цитата Сообщение от Toshik_ Посмотреть сообщение
так чтобы не повторяться
Если нужно последовательность чисел, которые не повторяются, то делают обычно так:
1. поместить числа нужного диапазона в массив (1..N)
2. перемешать массив http://www.cplusplus.com/refer... m_shuffle/
3. выбирать из массива последовательно
1
7 / 0 / 1
Регистрация: 20.09.2013
Сообщений: 18
20.09.2013, 14:26
#include <cstdlib>
using std::rand;

и генерируешь в скобках число [1+rand%100000], как я понимаю. А если числа повторяются в массиве, то надо проверку написать с помощью циклов все же просто
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
20.09.2013, 14:55
Заполнить массив случайными неповторяющимися числами
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
20.09.2013, 15:35
Ликбез для индивидуалов:
rand() возвращает числа в диапазоне [0;32767]
100000 разных чисел через нее получить нельзя.
1
 Аватар для Cynacyn
35 / 35 / 7
Регистрация: 02.05.2013
Сообщений: 109
20.09.2013, 15:41
Цитата Сообщение от castaway Посмотреть сообщение
Ликбез для индивидуалов:
rand() возвращает числа в диапазоне [0;32767]
100000 разных чисел через нее получить нельзя.
This value is library-dependent, but is guaranteed to be at least 32767 on any standard library implementation.
MSVCE 2010 в stdlib.h:
C++
1
#define RAND_MAX 0x7fff
Соответственное если изменить RAND_MAX, то можно получить числа больше 32767.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
20.09.2013, 15:47
Цитата Сообщение от castaway Посмотреть сообщение
rand() возвращает числа в диапазоне [0;32767]
rand возвращает int, а в 32-разрядных системах он значительно больше...

Добавлено через 1 минуту

Не по теме:

Хотя, возможно я и не прав....

0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
20.09.2013, 16:04
Ты можешь изменить RAND_MAX, но на результат вывода функции это не повлияет. Эта константа жестко прописана в libc.
Байт, я не понял что ты хотел этим сказать.
0
60 / 60 / 7
Регистрация: 14.09.2013
Сообщений: 145
20.09.2013, 16:13
Toshik_, вот такой вариант
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
#include <ctime>
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    int koef=100000/RAND_MAX;
    int rest=100000%RAND_MAX;
    long mas[10]={0};
    mas[0]=rand()*(rand()%koef)+rand()%rest;
    for (int i=1; i<10; i++){
        mas[i]=rand()*(rand()%koef)+rand()%rest;
        for (int j=0; j<i-1; j++){
            if (mas[j]==mas[i]){
                i--;
                break;
            }
        }
    }
    for (int i=0; i<10; i++)
        cout<<mas[i]<<" ";
    cout<<endl;
    system("pause");
}
0
7 / 0 / 1
Регистрация: 20.09.2013
Сообщений: 18
20.09.2013, 16:14
Цитата Сообщение от castaway Посмотреть сообщение
Ликбез для индивидуалов:
rand() возвращает числа в диапазоне [0;32767]
100000 разных чисел через нее получить нельзя.
#define RAND_MAX 0x7fff
900000+rand()%100000;
и смотри что получается
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
20.09.2013, 16:21
Используйте _lrand, и пусть вас не волнуют этих глупостей
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.09.2013, 16:35
Используйте <random> из C++11 тогда уж.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
20.09.2013, 21:18
Цитата Сообщение от makashello Посмотреть сообщение
#define RAND_MAX 0x7fff
900000+rand()%100000;
и смотри что получается
Получится диапазон: [900000;932767]
За это тебе здоровый минус. В будущем будь умнее.
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
20.09.2013, 21:23
А это не подходит?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <ctime>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
    const int SIZE=100000;
    srand(time(NULL));
    int mass[SIZE];
        for (int j=0; j<SIZE; j++)
            mass[j] = j+1;
        random_shuffle(mass, mass+SIZE);
        for (int j=0; j<SIZE; j++)
cout << setw(10) << setiosflags(ios::left) << mass[j];
 cout << " \n\n";
}
1
7 / 0 / 1
Регистрация: 20.09.2013
Сообщений: 18
21.09.2013, 14:59
Цитата Сообщение от castaway Посмотреть сообщение
Получится диапазон: [900000;932767]
За это тебе здоровый минус. В будущем будь умнее.
открываем дейтеля и читаем: стр 341 Для GNU C++ значение RAND_MAX равно 214748647, для Visual studio равно 32767. Прежде чем ставить минусы спрашивай какая система и сколько байтов целое число
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
21.09.2013, 15:28
Цитата Сообщение от makashello Посмотреть сообщение
Прежде чем ставить минусы спрашивай какая система и сколько байтов целое число, а не веди себя как идиот
Именно это я и имел в виду, но закрались сомнения. Дейтеля открывать было лень. Спасибо.
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
21.09.2013, 15:31
Если хочется писать переносимый код, то сгенерить сто тыщ уникальных чисел rand()'ом не получится.
0
7 / 0 / 1
Регистрация: 20.09.2013
Сообщений: 18
21.09.2013, 15:33
Цитата Сообщение от Tulosba Посмотреть сообщение
Если хочется писать переносимый код, то сгенерить сто тыщ уникальных чисел rand()'ом не получится.
это понятно=) но как говорится: "На вкус и цвет товарища нет=)" Мы же не знаем как обучается человек. Тема общая и компилятор не подписан
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.09.2013, 15:33
Помогаю со студенческими работами здесь

Неповторяющиеся рандомные числа
Друзья, Пишу программу для проверки таблицы умножения. В тот момент, когда он должен выдавать пример на решение должен быть рандом...

сделать рандомные числа
/* Задан массив Z(m) целых чисел. Если массив является знакочередующимся, то упорядочить его в порядке возрастания модулей, если нет,...

Массив и рандомные числа
Прошу прощения за возможно глупый вопрос но я никак не пойму где ошибка. По непонятным мне причинам rand() % 50; не работает , может я...

Не получается создавать рандомные числа
Вот мой код программы #include &lt;iostream&gt; #include &lt;stdlib.h&gt; using namespace std; int i; int main() { ...

Рандомные числа при компиляции
Гуглю уже час, но простого примера не нашел. Как можно сгенерировать рандомное число в таком виде? constexpr some_random_number =...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru