1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Рандом C++

Тема в разделе 'C/C++', создана пользователем alekill, 8 ноя 2011.

  1. TopicStarter Overlay

    alekill Пользователи

    Сообщения:
    166
    Лайки:
    27
    Репутация:
    0
    Команда:
    GreenCat
    Кароче,посоны,почему рандом показывает тут числа только 2 и 8?Как это исправить?Кто будет ругаться из-за Char'ов или If'ов тот - плохой человек.Char'ы нужны для Русских букв (Set locale не катит,потому что выводится не только в cout но и на проверку в IF),а на счет If'ов - мне было лень делать циклы.Код:
    Код:
    #include <iostream>
    #include <windows.h>
    #include <conio.h>
    
    using namespace std;
    
    int a,b,result,null;
    
    int main()
    {
    null = 2;
    char trener[133]; // Начальное
    CharToOem("Хотите потренировать себя в быстроте вычислений простых примеров на сумму?Тогда эта программа для вас.Автор - AleKill", trener);
    cout << trener << endl;
    char gotovv[70]; // Готов
    CharToOem("Как будете готовы напишите Готов или Готова с большой буквы.", gotovv);
    cout << gotovv << endl;
    char gotov[6];
    CharToOem("Готов", gotov);
    char gotova[7];
    CharToOem("Готова", gotova);
    char vg[7];
    cin >> vg; // Введите Готов / Готова
    if (strcmp(vg,gotov)==0 || strcmp(vg,gotova)==0)
    {
    a = rand() %10 +1;
    b = rand() %10 +1;
    cout << a << " + " << b << " = ";
    cin >> result;
    if (a + b == result)
    {
    char verno[7];
    CharToOem("Верно!", verno);
    null = null + 1;
    cout << verno << endl;
    }
    
    else 
    {
    char neverno[9];
    CharToOem("Неверно!", neverno);
    cout << neverno << endl;
    }
    
    }
    if (strcmp(vg,gotov)==0 || strcmp(vg,gotova)==0)
    {
    a = rand() %10 +1;
    b = rand() %10 +1;
    cout << a << " + " << b << " = ";
    cin >> result;
    if (a + b == result)
    {
    char verno[7];
    CharToOem("Верно!", verno);
    null = null + 1;
    cout << verno << endl;
    }
    
    else 
    {
    char neverno[9];
    CharToOem("Неверно!", neverno);
    cout << neverno << endl;
    }
    
    }
    
    if (strcmp(vg,gotov)==0 || strcmp(vg,gotova)==0)
    {
    a = rand() %10 +1;
    b = rand() %10 +1;
    cout << a << " + " << b << " = ";
    cin >> result;
    if (a + b == result)
    {
    char verno[7];
    CharToOem("Верно!", verno);
    null = null + 1;
    cout << verno << endl;
    }
    
    else 
    {
    char neverno[9];
    CharToOem("Неверно!", neverno);
    cout << neverno << endl;
    }
    
    }
    
    
    char endresult[14];
    CharToOem("Ваша оценка: ", endresult);
    cout << endresult << null << endl;
    char protv[9];
    CharToOem("Ошибок: ", protv);
    cout << protv << 5 - null << endl;
    char thx[38];
    CharToOem("Автор - AleKill.Привет,devs.", thx);
    cout << thx;
    
    getch();
    return 0;
    
    }
  2. TopicStarter Overlay

    alekill Пользователи

    Сообщения:
    166
    Лайки:
    27
    Репутация:
    0
    Команда:
    GreenCat
    Morze,напиши "говнокод".Я этого жду :unsure:
  3. gam1ng Эксперт MmoDev Пользователи White List

    Сообщения:
    299
    Лайки:
    432
    Репутация:
    1
    Команда:
    GG
    напиши свою функцию рандома, например:
    Код:
    int myRand(int max)
    {
    static int randomizer = GetTickCount();
    randomizer ^= 0x05309f61;
    randomizer += GetTickCount();
    randomizer = randomizer + (randomizer / 1000);
    randomizer &= 0x7fffffff;
    return (randomizer % max);
    }
    Agi и alekill нравится это.
  4. TopicStarter Overlay

    alekill Пользователи

    Сообщения:
    166
    Лайки:
    27
    Репутация:
    0
    Команда:
    GreenCat
    Мне кажется,есть решение по проще,для решения такой простой задачи слишком много всего придется задействовать
  5. TopicStarter Overlay

    alekill Пользователи

    Сообщения:
    166
    Лайки:
    27
    Репутация:
    0
    Команда:
    GreenCat
    Да и какая-то библиотека вроде есть для этого,давно не программировал просто,теперь вспоминаю потихонечку.
  6. gam1ng Эксперт MmoDev Пользователи White List

    Сообщения:
    299
    Лайки:
    432
    Репутация:
    1
    Команда:
    GG
    Если стандартная библиотека по каким-то причинам не выполняет возложеной задачи, или программиста не устраивает предложеное решение, есть два варианта:
    1. написать свой аналог, удовлетворяющий требованиям
    2. пытатся понять, что зделано не так, и если это не удалось - искать другие решения

    В данном случае быстрее написать аналог, нежели разбирать в чем ошибка.
  7. TopicStarter Overlay

    alekill Пользователи

    Сообщения:
    166
    Лайки:
    27
    Репутация:
    0
    Команда:
    GreenCat
    Надо пытаться все делать проще,спасибо гуглу за это,нашел.
    Если кому надо,подключаем #include <time.h> и в начале мэйна srand(time(NULL));
  8. gam1ng Эксперт MmoDev Пользователи White List

    Сообщения:
    299
    Лайки:
    432
    Репутация:
    1
    Команда:
    GG
    На написание функции ушло около минуты, на поиски в гугле и вкуривание сути может уйти больше времени. Да и не всегда в гугле есть решение нужной задачи.
  9. MorzE nullptr AngeliCore Пользователи

    Сообщения:
    198
    Лайки:
    134
    Пол:
    Мужской
    Репутация:
    3
    Страна:
    Russian Federation Russian Federation
    А стандартная функция rand уже не удовлетворяет?
  10. gam1ng Эксперт MmoDev Пользователи White List

    Сообщения:
    299
    Лайки:
    432
    Репутация:
    1
    Команда:
    GG
    Сам фапай на свой rand . Меня удовлетворяет только оптимальное решение.
  11. MorzE nullptr AngeliCore Пользователи

    Сообщения:
    198
    Лайки:
    134
    Пол:
    Мужской
    Репутация:
    3
    Страна:
    Russian Federation Russian Federation
    Чем же rand cтал не оптимальным решением?
  12. gam1ng Эксперт MmoDev Пользователи White List

    Сообщения:
    299
    Лайки:
    432
    Репутация:
    1
    Команда:
    GG
    Ну раз у человека по началу возникли с ним проблемы, что сперва надо инициализировать и т.д... Чем мой вариант генератора хуже?
    1 человеку нравится это.
  13. Kenpachi™ Who Crazy? Old school Пользователи Just a troll

    Сообщения:
    361
    Лайки:
    195
    Пол:
    Женский
    Репутация:
    0
    Команда:
    Solo
    правильно, изобретайте велосипеды.
    2 пользователям это нравится.
  14. MorzE nullptr AngeliCore Пользователи

    Сообщения:
    198
    Лайки:
    134
    Пол:
    Мужской
    Репутация:
    3
    Страна:
    Russian Federation Russian Federation
    Что-то я не видел, чтобы этот человек жаловался на эту функцию.
    1 человеку нравится это.
  15. pifagor Пользователи

    Сообщения:
    57
    Лайки:
    16
    Пол:
    Мужской
    Репутация:
    0
    DiMaxiM, вроде не плохой рандом у него, что дальше чепуху молоть то?
    1 человеку нравится это.
  16. gam1ng Эксперт MmoDev Пользователи White List

    Сообщения:
    299
    Лайки:
    432
    Репутация:
    1
    Команда:
    GG
    Интересно, а как "хороший" рандом отличить от "плохого"? Я думаю ни для кого не секрет, что в некоторых случаях нужен спецефический рандом, например, для программирования движков азартных игр - иначе казино уйдёт в минус со стандартным рандомом (есть схемы, и вполне работоспособные, которые позволяют определить ставку, при которой будет максимальный выигрыш - работает во всех нубодвижках). Всё зависит от целей.
    1 человеку нравится это.
Черновик сохранён Черновик удалён

Поделиться этой страницей