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

Еще про случайные числа. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Какая-то ошибка с памятью, где накосячил? http://www.cyberforum.ru/cpp-beginners/thread343229.html
Всех приветствую! Собственно программа - зачаток простого генетического алгоритма. Что делает: создается популяция с заданным количеством индивидов, которые есть бинарные строки, нужно найти строчку с максимальным количеством переходов 1-0. 1) создаем популяцию и заполняем случайно; 2) вычисляем пригодность; 3) проверяем нет ли в популяции нужного решения (если есть, то все); 4) селекция...
C++ Ошибка Всем привет! Есть гкод, запускаю-не работает, подскажите почему #include<iostream.h> #include<conio.h> #include<string.h> #include<algorithm> #include<set.h> class Team { http://www.cyberforum.ru/cpp-beginners/thread343228.html
DWORD to double C++
нарисовалась такая проблемка - не могу корректно привести число типа DWORD к числу типа double если кто знает-подскажите как это правильно сделать
C++ Записать в ::map ini-файл
Есть большой ini-файл, в ListView вывожу название секций, при выборе конкретной строки списка вывожу соответствующие значения ключей (текстом в ListBox). Получается, при каждом выборе строки идет обращение к ini-файлу. Можно ли предварительно весь ini-файл записать в ::map? Ключами будут названия секций (они уникальны). Все еще усложнятся из-за того, что в разных секциях бывает разное число...
C++ Объектный подход... http://www.cyberforum.ru/cpp-beginners/thread343101.html
//--------------------------------------------------------------------------- #pragma hdrstop #include <tchar.h> #include <iostream.h> #include <windows.h> //--------------------------------------------------------------------------- #pragma argsused
Visual C++ Отладка MFC проектов Столкнулся с проблемой. Создал одно документный MFC проект, нету никаких ошибок, все замечательно, вот только при вычислении всех действий выводит 0. Хотелось бы узнать, есть ли нормальный режим отладки, или просто такой, чтобы было видно каким переменным что присваивается, например, как консольный отладчик с++. подробнее

Показать сообщение отдельно
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
18.08.2011, 18:23     Еще про случайные числа.
В прикрепленную тему не смог написать:
Еще вариант на WinAPI-Wincrypt генерации случайной последовательности:

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
....
#include <windows.h>
#include <Wincrypt.h>
 
#include <string>
#include <vector>
....
 
class crypto_context_t {
    HCRYPTPROV      cryptprov_;
    std::wstring    container_name_;
public:
    crypto_context_t()
        :cryptprov_(NULL) 
    {}
    crypto_context_t(const std::wstring _name)
        :cryptprov_(NULL) 
        ,container_name_(_name)
    {}
    ~crypto_context_t() {
        if( cryptprov_ != NULL ) {
            CryptReleaseContext( cryptprov_, 0 );
        }
    }
public:
    HCRYPTPROV operator ()( DWORD prov_type ) {
 
        if( cryptprov_ == NULL  ) {
 
            BOOL res = CryptAcquireContext( &cryptprov_, 
                container_name_.empty() ? NULL : container_name_.c_str(), 
                NULL, prov_type, 0);
 
            if( 0 == res ) {
                if( GetLastError() == NTE_BAD_KEYSET ) {
                    if(!CryptAcquireContext( &cryptprov_, 
                        container_name_.empty() ? NULL : container_name_.c_str(), 
                        NULL, prov_type, CRYPT_NEWKEYSET)) 
                        throw std::runtime_error("CryptAcquireContext fail."); // use check GetLastError()
                } else {
                    throw std::runtime_error("CryptAcquireContext fail."); //  use GetLastError()
                }
            } 
        }
        return cryptprov_;
    }
    operator HCRYPTPROV () { return cryptprov_; };
};
 
struct random_t {
    crypto_context_t context;
    random_t()
        :context( L"test criptor" )
    {}
    void operator ()(std::vector<char> &data, size_t len) {
        data.resize(len);
        if(!CryptGenRandom( context( PROV_RSA_FULL ), len, (BYTE *)&data[0])) {
            throw std::runtime_error("CryptGenRandom fail.");
        };
    }    
};
...... 
// usage 
int main () {
 
    random_t rnd;
    std::vector<char> test;
    std::string hex_;
    try {
        rnd(test, 64); 
        bytes_to_hex_string(&test[0], test.size(), hex_);
        cout << "Result: " << hex_ << "\n";
    } catch (const std::runtime_error &ex) {
        cout << ex.what();
    }
 
    return 0;
}
Out:
Result: 112B7E60170E9D1EA5CAB874A160417A6769F3D5A9604103F7FC58F2574BE273262F2C1322E78BB7468987353C1EFFD07EF0FB420CEB3841BB92159339C565C5

Нужен Windows 2000 и выше.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru