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

Генерация рандомных чисел

13.11.2017, 02:13. Показов 853. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, мне надо реализовать метод Монте-Карло для симплекса с 4 узлами. При реализации обнаружил что в некоторые узлы симлекса точка чаще попадает.
Я думаю это из-за в псевдо случайных чисeл.
Как еще их можно генерировать?
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include "stdafx.h"
#include <iostream>
#include<time.h>
using namespace std;
 
static int A1 = 0;
static int A2 = 0;
static int A3 = 0;
static int A4 = 0;
 
class Dot
{
private:
    const int left = 1;
    const int right = 2;
    const int up = 3;
    const int down = 4;
    int x;
    int y;
public:
    Dot() :x(7), y(1) {};
    Dot(int x, int y, int z) :x(x), y(y) {};
    void wandering(int n, Dot d)
    {
        int step;
        Dot temp;
        temp.x = d.x;
        temp.y = d.y;
        for (int i = 0; i < n; i++)
        {
            //cout << " loop№" << i+1;
            d.x = temp.x;
            d.y = temp.y;
            while (d.x != 12 && d.y != 12 && d.z != 12)
            {
                step = 1 + rand() % 2;
                /*****************************************************************/
                if ((step == left) && d.x == -12) { continue; }
                if ((step == down) && d.y == -12) { continue; }
                if ((step == right) && d.x == 12) { continue; }
                if ((step == up) && d.y == 12) { continue; }
                /******************************************************************/
                if (step == left) { d.x--; }
                if (step == right) {d.x++; }
                if (step == up) { d.y++; }
                if (step == down) {d.y--; }
                //cout << " x=" << d.x << " y=" << d.y << " z=" << d.z << "\t" << '\n';
            }
            if (d.x == 12&&d.y==12) { A3++; }
            if (d.y == 12&&d.x==-12) { A4++; }
            if (d.y == -12&&d.x==12) { A2++; }
            if (d.y == -12 && d.x == -12) { A1++; }
        }
    }
 
};
int main()
{
    srand(time(NULL));
    setlocale(LC_ALL, "Russian");
    float Temperature = 0,t=0,t2=0;
    float a1, a2, a3,a4;
    int step = 0;
    const int k = 5;
    int n = 1000;
    Dot d;
    for (int i = 0; i < k; i++)
    {
        cout << "\n Испытание#" << i + 1;
        cout << "\n К-во вкинутых част " << n;
        d.wandering(n, d);
        a1 = static_cast<int>(A1); a2 = static_cast<int> (A2); a3 = static_cast<int> (A3); a4 = static_cast<int>(A4);
        t = (20 * (a1 / n)) + (40 * (a2 / n)) + (60 * (a3 / n)) + (80 * (a4 / n));
        cout << "\n Сумма вкинутых част которые попали в узел =" << A1 + A2 + A3+A4;
        cout << "\n К-во вкинутых част которые попали в узел A1(n1)=" << A1 << "\n К-во вкинутых част которые попали в узел  A2(n2)=" << A2 << "\n К-во вкинутых част которые попали в узел  A3(n3)=" << A3 <<"\n К-во вкинутых част которые попали в узел  A4(n4)=" <<a4<< "\n Temperature(M3)=" << t << endl;
        Temperature += t;
        t = 0;
        A1 = 0;
        A2 = 0;
        A3 = 0;
        A4 = 0;
    }
    cout << "\n\n Сер значення темеператури =" << Temperature / k<<endl;
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.11.2017, 02:13
Ответы с готовыми решениями:

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

Генерация рандомных чисел от 1 до 6
Простая программка, заготовка к игре морской бой на 6 клеток, суть в том, что человек вводит число от одного до 6, программа говорит, попал...

Генерация рандомных чисел в диапазоне
Добрый день подскажите (или дайте кусочек кода) как реализовать генерацию рандомных чисел

1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
13.11.2017, 09:20
<random>.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.11.2017, 09:20
Помогаю со студенческими работами здесь

Генерация рандомных чисел от 0 до 65535
Ну собственно мне нужно заполнить массив случайными числами в диапазоне от 0 до 65535. Как это сделать? Ведь в rand() числа от 0 до 32к

Генерация рандомных символов
Народ есть некоторый код для генерации символов с кодом(рандомным), эти числа забиваются в массив. Проблема в том, что каждый раз программа...

Необходимо изобразить эту программу, без получения рандомных чисел, а ввод с клавиатуры чисел N
Вычислить сумму отрицательных элементов последовательности из N произвольных чисел

Промежуток рандомных чисел
Здравствуйте. Подскажите пожалуйсто где я тут напортачил. Нужно вывести 10 рандомных чисел в промежудке от 12 до 19, а у меня програма...

Генератор рандомных чисел
Добрый день, понимаю, что таких тем не мало, но вроде как юзав поиск на форуме и гугл я не нашел то, что решило бы мою проблему. Хотел...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru