Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
 Аватар для Mr_Twain
1 / 1 / 0
Регистрация: 21.02.2016
Сообщений: 63

Randomize + Switch()

05.03.2017, 16:41. Показов 3246. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создается массив, рандомится число и подается в Switch для выбора индекса Case.

При простом выводе массива в Label - всё получается. Числа не повторяются и работает всё, как нужно (см.скрин). Но как только я подаю его в Switch(), то начинаются какие-то непонятные баги. Числа начинают повторятся.

Помогите. Прилагаю скрин и отрывок кода.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//создание и рандомизация массива
static int i = 0;
static int num[10];
 
 if(!i)
  {
   randomize();
   for(int i = 0; i < 10; i++) num[i] = i + 1;
   std::random_shuffle(num, &num[10]);
  }
 
Label1->Caption = Label1->Caption+" "+String(num[i]); //для проверки
//подача в switch
switch(num[i])
{
case 1:
...
}
Изображения
 
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.03.2017, 16:41
Ответы с готовыми решениями:

randomize
Нужно сделать прогу, чтобы массив был из случайных чисел....Но все время получается упорядоченный массив...Почему так? Что нужно изменить,...

Randomize
У меня есть вопрос:если нужно отрандомайзить числа от 1-6 исключая ,например,4.Это как записать? Без исключая 4 я бы записал...

Randomize
Значит,вопрос такой. Вот возьмём функцию randomize.Т.Е. генерация случайного числа от остатка от деления др случайного числа. ...

23
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33479 / 21577 / 8250
Регистрация: 22.10.2011
Сообщений: 37,040
Записей в блоге: 12
08.03.2017, 10:50
Лучший ответ Сообщение было отмечено Mr_Twain как решение

Решение

Студворк — интернет-сервис помощи студентам
Внесем разнообразие в унылое использование массивов, и их заполнение вручную. Заменим массив num на вектор, заполнять который будем при создании безо всяких циклов. Билдера под рукой нет, есть только онлайн-компилятор, там все прекрасно собирается и работает. Насколько я понимаю, в новых Билдерах есть boost, так что проблем быть не должно и там:

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
#include <iostream>
#include <random>
#include <vector>
#include <algorithm>
#include <boost/iterator/counting_iterator.hpp>
 
const int size = 10;
 
void func()
{
    static int i = 0;
    static std::vector<int> vec(boost::make_counting_iterator(0), boost::make_counting_iterator(size)); // вот он, вектор который будет перемешиваться
    if(!i) // первый вызов функции
    {
        std::cout << "Shuffling: "; // перемешиваем, и смотрим, что получилось
        std::random_device rd;
        std::mt19937 g(rd());
        std::shuffle(vec.begin(), vec.end(), g);
        std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
        std::cout << std::endl;
    }
    std::cout << i << " " << vec[i] << std::endl; // а при последующих запусках только выводим очередной элемент
    i++;
}
    
 
int main() {
    
    for(int i = 0; i < size; i++)
    {
        func();
    }
    return 0;
}
Результат работы:
Code
1
2
3
4
5
6
7
8
9
10
11
Shuffling: 5 2 8 7 3 9 6 4 1 0 
0 5
1 2
2 8
3 7
4 3
5 9
6 6
7 4
8 1
9 0
1
 Аватар для Mr_Twain
1 / 1 / 0
Регистрация: 21.02.2016
Сообщений: 63
08.03.2017, 12:11  [ТС]
d7d1cd, Если Бога нет, то кто вы?
Всё понятно объяснили, теперь буду знать. Огромнейшее спасибо!

Это получается, что у меня каждый раз происходило перемешивание и брало первый элемент массива, а должно было перемешать один раз и брать последующий элемент. Оказалось всё так просто.
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
08.03.2017, 17:46
Mr_Twain, Бог есть.
1
 Аватар для Mr_Twain
1 / 1 / 0
Регистрация: 21.02.2016
Сообщений: 63
11.03.2017, 12:45  [ТС]
Снова здравствуйте. Возникли проблемы теперь в этом коде провести один цикл. Должно получиться что-то вроде:
C++
1
2
if (потерян фокус окна)
x++;
Проблема в том, чтобы объявить этот фокус. Пробую if (Form1->OnDeactivate) или FormDeactivate - ничего не получается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2017, 12:45

RANDOMize на символы
Всем привет.. у меня тут вопрос как зделать рандомайз функцию на символы ? На цифры например я делал функцию такую: *int NumGen() { ...

Зачем писать randomize()
Зачем писать randomize(); Если функция (random(21)-10) работает и без этой строки, зачем это вообще надо?

Неправильно работает Randomize()
Здравствуйте, функция случайности, как то странно работает. void __fastcall TForm1::Button1Click(TObject *Sender) { const bool...

Генератор случайных чисел и Randomize
Подскажите пожалуйста как задать в генераторе случайных чисел интервал то есть чтобы он генерировал не только положительный целые числа но...

Формирования массива из константы в randomize
ребята помогите переделать формирования массива из константы в randomize: const count = 100; int n = 11; // оголошення у вигляді...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. Сразу отвечу: А в PvP с ним. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru