Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Aliskaa
0 / 0 / 0
Регистрация: 18.11.2016
Сообщений: 14
1

Интерфейс линейного конгруэнтного генератора случайных чисел

08.03.2017, 19:52. Просмотров 453. Ответов 6
Метки нет (Все метки)

Здравствуйте, у меня есть код на с++ линейного конгруэнтного генератора, я не знаю как в QT Creator добавить к коду интерфейс, то есть нужна какая-то кнопка, которая бы генерировала числа. Кто-нибудь знает как создать интерфейс?

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 namespace std;
 
double congruential(int &); // прототип функции генерации псевдослучайных чисел
 
int main(int argc, char* argv[])
{
    const int number_numbers = 25; // количество псевдослучайных чисел
          int x0 = 2; // начальное значение (выбирается случайно 0 <= x0 < m)
    cout << "\npseudo-random numbers:   ";
    for (int i = 0; i <= number_numbers; i++)
        cout << congruential(x0) << " "; // генерация i-го числа
    cout << "\n";
    return 0;
}
 
double congruential(int &x) // функция генерации псевдослучайных чисел
{
 const int m = 100, // генерация псевдослучайных чисел в диапазоне значений от 0 до 100 (выбирается случайно m > 0)
           a = 8, // множитель (выбирается случайно 0 <= a <= m)
         inc = 65; // инкрементирующее значение (выбирается случайно 0 <= inc <= m)
 x = ((a * x) + inc) % m; // формула линейного конгруэнтного метода генерации псевдослучайных чисел
 return (x / double(m));
}
 Комментарий модератора 
Ставьте теги!
Правила именования тем и оформления сообщений в разделе Qt
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2017, 19:52
Ответы с готовыми решениями:

Массив случайных чисел
Помогите пожалуйста создать в QT массив из случайных чисел, на C++, понятия не...

Генерация случайных чисел в QT
Доброго времени суток. Нужна функция которая будет генерировать числа от 1 до...

Вскрытие линейного конгруэнтного генератора псевдослучайных чисел
Добрый день. Надеюсь, что здесь не сильно будут ругаться, если я скажу, что я...

Заполнить матрицу с помощью линейного конгруэнтного генератора псевдослучайных чисел с заданными параметрами
Дана матрица M*N. Заполнить ее с помощью линейного конгруэнтного генератора...

Определить последовательность чисел и период линейного конгруэнтного генератора ПСЧ для различных параметров
Помогите плиз с лабами Лабораторная работа №4 К теме «Генераторы...

6
Aliskaa
0 / 0 / 0
Регистрация: 18.11.2016
Сообщений: 14
08.03.2017, 21:54  [ТС] 2
я поняла как сделать интерфейс(самый простой), но как связать код на с++ с интерфейсом я не разобралась
0
Миниатюры
Интерфейс линейного конгруэнтного генератора случайных чисел  
Wyn
1056 / 638 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
08.03.2017, 22:20 3
Aliskaa, в Qt есть сигнал-слотовая система. К примеру, при нажатии у кнопки генерируется сигнал clicked. К сигналам вы можете подключить другие сигналы или слоты(функции). В вашем случае, как я понимаю, нажатие на кнопку вызывает выполнение функции on_pushButton_clicked.

Обращаться к элементам в ui можно в MainWindow через ui->имя_элемента. Пример:
C++ (Qt)
1
2
3
4
void MainWindow::on_pushButton_clicked()
{
    ui->lcdNumber->display("10");
}
P.S. По хорошему вам бы надо прочитать хотя бы одну книгу, вводящую в Qt. Список книг представлен тут.
1
Aliskaa
0 / 0 / 0
Регистрация: 18.11.2016
Сообщений: 14
09.03.2017, 13:28  [ТС] 4
Спасибо, буду дальше разбираться)
0
Aliskaa
0 / 0 / 0
Регистрация: 18.11.2016
Сообщений: 14
19.03.2017, 17:18  [ТС] 5
Здравствуйте, у меня получилось выполнять функцию при нажатии на кнопку, но теперь появилась новая проблема. Вот код, который выполняется при нажатии на кнопку:

C++ (Qt)
1
2
3
4
5
6
void MainWindow::on_pushButton_clicked()
{
    int x0 = 2;
congruential(x0);
ui->lcdNumber->display(x0);
}
При первом нажатии на кнопку x0=2, с ним выполняется функция congruential(), которая присваивает х0 новое значение. Как сделать, чтобы это новое значение сохранялось при следующем нажатии на кнопку и х0 равнялось не 2, а новому значению и т д?

Помогите, пожалуйста))

 Комментарий модератора 
Последний раз предупреждаю - ставьте теги.
Правила именования тем и оформления сообщений в разделе Qt
0
alexu_007
156 / 170 / 36
Регистрация: 29.05.2015
Сообщений: 1,171
19.03.2017, 17:49 6
Объявите переменную:

C++ (Qt)
1
static int x0 = 2;
тогда переменная не будет уничтожаться при выходе из слота (функции).

Добавлено через 12 минут
Функция генерации псевдослучайных чисел возвращает значение случайного числа, вы его почему-то игнорируете. Нужно вот так:

C++ (Qt)
1
x0 = congruential(x0);
Ну и выводить на экран лучше в метку label (метку сперва нужно поместить на форму) - в неё можно выводить и строку и число. Для числа это делается так:

C++ (Qt)
1
ui->label->setText(QString::number(x0));
1
Aliskaa
0 / 0 / 0
Регистрация: 18.11.2016
Сообщений: 14
19.03.2017, 18:27  [ТС] 7
спасибо большое, очень помогло))
0
19.03.2017, 18:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2017, 18:27

Реализовать генератор псевдослучайных чисел на основе линейного конгруэнтного метода
Реализовать генератор псевдослучайных чисел на основе линейного конгруэнтного...

С помощью генератора случайных чисел создать и вывести на экран массив случайных действительных чисел
Задача №1: С помощью генератора случайных чисел создать и вывести на экран...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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