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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
#1

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

19.05.2011, 18:06. Просмотров 2143. Ответов 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. Откуда оно тут взялось?


Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2011, 18:06     Случайные четные числа
Посмотрите здесь:

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

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

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

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

Случайные числа от -10 до 10 - C++
сижу я значит и не могу вывести случайные числа от -10 до 10! Получается только от -50 до 50, for(int j= 0; j&lt;8; j++) ...

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

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

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

А как быть с этим:
"Напишите единственный оператор, который будет печатать случайно выбранное число из набора: 2, 4, 6, 8."
?
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
19.05.2011, 18:18     Случайные четные числа #4
Цитата Сообщение от 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();
}
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
19.05.2011, 18:19  [ТС]     Случайные четные числа #5
Спасибо, конечно, но как обойтись без массивов?
Я до них не дошёл ещё
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
19.05.2011, 18:23     Случайные четные числа #6
попробуйте так:
C++
1
int random = 2 * (rand() % 4 + 1);
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
19.05.2011, 18:25     Случайные четные числа #7
C++
1
2
3
4
5
6
7
int my_gen()
{
  int n;
  if( (n = rand() % 7 + 2) % 2 )
    return ++n;
  return n;
}
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
19.05.2011, 18:26  [ТС]     Случайные четные числа #8
Понял. Спасибо.
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
19.05.2011, 18:31     Случайные четные числа #9
ИМХО так проще и понятней. обнулить младший разряд.
C++
1
2
3
4
    srand(time(0));
 
    for (int i=0; i<20; i++)
        std::cout << ((rand()%20)&(~1)) << '\n';
easybudda
Эксперт CЭксперт С++
9468 / 5481 / 927
Регистрация: 25.07.2009
Сообщений: 10,505
20.05.2011, 01:45     Случайные четные числа #10
Мы простых путей не ищем!
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2011, 11:14     Случайные четные числа
Еще ссылки по теме:

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

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

случайные числа - C++
Всем привет! нужна ваша помощь. мне нужно реализовать функцию, которая заполняет двумерный массив mat случайными числами. на сколько я...

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

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


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

Или воспользуйтесь поиском по форуму:
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
20.05.2011, 11:14     Случайные четные числа #11
Ну раз так, тогда вот еще один "марсианский" вариант:
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;
}
Yandex
Объявления
20.05.2011, 11:14     Случайные четные числа
Ответ Создать тему
Опции темы

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