Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/64: Рейтинг темы: голосов - 64, средняя оценка - 4.88
 Аватар для vortexx1
6 / 6 / 3
Регистрация: 06.03.2011
Сообщений: 269

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

19.05.2011, 18:06. Показов 13340. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
"Напишите единственный оператор, который будет печатать случайно выбранное число из набора: 2, 4, 6, 8.
Как это реализовать?

Для начала хотел просто сделать генератор "случайных" чисел от 2 до 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
#include <iostream>
using std::cout;
using std::endl;
 
#include <cstdlib>
using std::rand;
using std::srand;
 
#include <ctime>
using std::time;
 
#include <conio.h>
 
 
int main ()
{ 
     srand (time (0) );
     
     int random = 2 + rand() % 8;
     cout << random;
 
    getch ();
    return 0;
}
но после запуска программа иногда выдаёт число 9. Откуда оно тут взялось?


Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.05.2011, 18:06
Ответы с готовыми решениями:

Вывести четные случайные числа
2 Задача) Сгенерировали 3 целых числа в диапазоне от -15 до 20. вывести четные из них на экран Это все в С++

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

Случайные числа
int main() { srand(time(0)); int a = rand()%100; cout &lt;&lt; a &lt;&lt; endl; system(&quot;pause&quot;); } Есть вот такой способ задания...

10
 Аватар для Mиxaил
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
19.05.2011, 18:10
Это означает,
C++
1
int random = 2 + rand() % 8;
что максимальное генерируемое число будет 7 (от 0 до 7 - это те самые 8 чисел), да еще плюсануть 2, вот и выходит 9...
1
 Аватар для vortexx1
6 / 6 / 3
Регистрация: 06.03.2011
Сообщений: 269
19.05.2011, 18:16  [ТС]
Аааааа, спасибо!

А как быть с этим:
"Напишите единственный оператор, который будет печатать случайно выбранное число из набора: 2, 4, 6, 8."
?
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
19.05.2011, 18:18
Цитата Сообщение от vortexx1 Посмотреть сообщение
А как быть с этим:
C++
1
2
3
4
5
6
7
8
9
int my_gen(){
  int arr[4] = {2, 4, 6, 8};
  return arr[rand() % 4];
}
 
int main(){
  srand(time(0));
  std::cout << my_gen();
}
1
 Аватар для vortexx1
6 / 6 / 3
Регистрация: 06.03.2011
Сообщений: 269
19.05.2011, 18:19  [ТС]
Спасибо, конечно, но как обойтись без массивов?
Я до них не дошёл ещё
0
 Аватар для Mиxaил
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
19.05.2011, 18:23
попробуйте так:
C++
1
int random = 2 * (rand() % 4 + 1);
1
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
19.05.2011, 18:25
C++
1
2
3
4
5
6
7
int my_gen()
{
  int n;
  if( (n = rand() % 7 + 2) % 2 )
    return ++n;
  return n;
}
1
 Аватар для vortexx1
6 / 6 / 3
Регистрация: 06.03.2011
Сообщений: 269
19.05.2011, 18:26  [ТС]
Понял. Спасибо.
0
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
19.05.2011, 18:31
ИМХО так проще и понятней. обнулить младший разряд.
C++
1
2
3
4
    srand(time(0));
 
    for (int i=0; i<20; i++)
        std::cout << ((rand()%20)&(~1)) << '\n';
3
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
20.05.2011, 01:45
Мы простых путей не ищем!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <math.h>
 
int even(void) { return (2468 / (int)pow(10.0, rand() % 4)) % 10; }
 
int main(void){
    int i;
    
    srand(time(NULL));
    for ( i = 0; i < 10; ++i )
        printf("%d\n", even());
        
    return 0;
}
Добавлено через 1 час 39 минут
марсианский вариант
C
1
int even(void) { return (int)("2468"[rand() % 4] - '0'); }
Добавлено через 5 часов 20 минут
и ещё один
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define even() ("\x2\x4\x6\x8"[rand() % 4])
 
int main(void){
    int i = 10;
    
    srand(time(NULL));
    while ( i-- )
        printf("%d ", even());
    printf("\n");
    
    return 0;
}
2
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
20.05.2011, 11:14
Ну раз так, тогда вот еще один "марсианский" вариант:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <ctime>
#include <cstdlib>
int main(){
    srand(time(0));
    for(int i=0;i<10;i++)
        std::cout<<abs(int(int(&i+rand())%10))<<std::endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2011, 11:14
Помогаю со студенческими работами здесь

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

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

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

Случайные числа
Доброго времени суток! Возможно ли сделать так, чтобы выпадали в случайном порядке числа 0, 2, 6, 8?

Случайные числа
Всем привет! Мне нужно сгенерировать действительное случайное число в диапазоне от нуля до 1. Читал вот это:...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru